先看一个例子:
#include <stdio.h>
#define STLEN 10
int main(void) {
char words[STLEN];
int i;
puts("Enter strings (empty line to quit):");
while (fgets(words, STLEN, stdin) != NULL && words[0] != '\n') {
i = 0;
while (words[i] != '\n' && words[i] != '\0')
i++;
if (words[i] == '\n')
words[i] = '\0';
else // 如果word[i] == '\0'则执行这部分代码
while (getchar() != '\n')
continue;
puts(words);
}
puts("done");
return 0;
}
Enter strings (empty line to quit):
|This
This
|program seems
program s
|unwilling to accept long lines.
unwilling
|But it doesn't get stuck on long
But it do
|lines either.
lines eit
done
程序清单中出现了空字符和空指针。 从概念上看, 两者完全不同。 空字符( 或'\0') 是用于标记C字符串末尾的字符, 其对应字符编码是0。 由于其他字符的编码不可能是 0, 所以不可能是字符串的一部分。
空指针( 或NULL)有一个值,该值不会与任何数据的有效地址对应。另外,函数使用它返回一个有效地址表示某些特殊情况发生,例如遇到文件结尾或未能按预期执行。
空字符是整数类型,而空指针是指针类型。两者有时容易混淆的原因是:它们都可以用数值0来表示。但是,从概念上看,两者是不同类型的0。另外,空字符是一个字符,占1字节;而空指针是一个地址,通常占4字节。
1439

被折叠的 条评论
为什么被折叠?



