在C语言字符串中迷失:NULL、空格问题

6

在C语言中,我可以说字符串中的空格具有NULL类型,还是其他类型?
在C语言中,哪个字符表示字符串的终止?

4个回答

17

空字符(ASCII 值为 0,作为字符字面量的'\0')用于终止 C 语言中的字符串。与空白字符不同,通常不将其视为一种空格字符。

例如,在字符串"Hello world" 中间的空格是具有 ASCII 值 32 的字符。这与 NULL 或 \0 不同。


3
实际上,终止字符串的ASCII字符的名称是NUL。 - EvilTeach
我认为“通常”这个词是没有必要的。查看标准后,我发现在“C”语言环境中,只有空格字符返回true;对于其他语言环境,标准规定:“isspace函数测试任何标准空白字符或一个特定于语言环境的字符集中的字符,其中isalnum为false”。然而,NUL字符是基本执行字符集的一部分(这也明确说明了),因此不能成为引用的特定于语言环境的字符集之一。 - 6502

3

在C语言中,我可以说字符串中的空白字符具有NULL类型吗?还是其他类型?

我不确定您所谓的NULL类型是什么意思。空格是空格字符、制表符或回车符。

在C语言中,哪个字符表示字符串的终止?

'\0'字符表示字符串的终止。


3
以下字符被视为“空格”,因为isspace()函数返回非零值:
- 空格(ASCII 0x32,C语言文字' ') - 制表符(ASCII 0x09,C语言文字'\t') - 垂直制表符(ASCII 0x0B,C语言文字'\v') - 换页符(ASCII 0x0C,C语言文字'\f') - 回车符(ASCII 0x0E,C语言文字'\r') - 换行符(ASCII 0x0A,C语言文字'\n'
字符串终止符是ASCII NUL (0x00)字符;如果您尝试将其输出到控制台或终端,则通常不会对光标产生影响。

1
趣闻:NUL编码为零,因为它对应于空白纸带标记。DEL编码为0x7f(有时为0xff),因为它对应于在纸带上打孔的所有孔,曾经被称为RUBOUT,表示它用于在不需要操作员重新打孔整个纸带的情况下更正错误。 - RBerteig

0

终止字符是一个值为0的字节。以文字形式表示,它是'\0'

关于空格具有NULL类型的第一个问题毫无意义。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接