如何使char为null?

如何使char为null?,c,null,char,C,Null,Char,这就是我为测试ubuntu的windows子系统所写的内容: #include <stdio.h> int () { char a = '\0'; printf("H%cello World\n",a); return 0; } 供参考的屏幕截图: 编辑::: 我预料 USER@DESKTOP-blahblah~/dir/%./a.out Hello World 正如你所想的,没有空字符。NUL终止字符不是空的字符。它是一个ascii码为0

这就是我为测试ubuntu的windows子系统所写的内容:

#include <stdio.h>

int () {
     char a = '\0';
     printf("H%cello World\n",a);
     return 0;
}

供参考的屏幕截图:

编辑:::

我预料

 USER@DESKTOP-blahblah~/dir/%./a.out
 Hello World

正如你所想的,没有空字符。NUL终止字符不是空的
字符
。它是一个ascii码为
0
的字符。您已经打印了NUL终止字符。它不是在输出空间——它只是在打印
'\0'
。它可能是不同系统上的其他内容。

正如您所想,没有空字符。NUL终止字符不是空的
字符
。它是一个ascii码为
0
的字符。您已经打印了NUL终止字符。它不是在输出空间——它只是在打印
'\0'
。它可能是不同系统上的其他东西

 char a = '\0';
 printf("H%cello World\n",a);
a
是空字符,而不是空字符。事实上,没有空字符这样的东西。
printf
调用将打印
H
,后跟空字符,后跟
“ello World”
,后跟换行字符

在我的系统(Ubuntu,xterm)上,当我运行你的程序(修复后)时,我看到:

因为我使用的终端模拟器忽略了空字符。显然,您使用的是打印空格或在打印空字符时仅向前移动光标的方法

不,没有任何值可以设置为
a
,这将导致程序只打印
Hello World

如果要修改程序以使用空字符串(确实存在)而不是空字符(不存在),可以:

#include <stdio.h>
int main(void) {
     char empty[] = "";
     printf("H%sello World\n", empty);
}
#包括
内部主(空){
字符为空[]=“”;
printf(“H%sello World\n”,空);
}
a
是空字符,而不是空字符。事实上,没有空字符这样的东西。
printf
调用将打印
H
,后跟空字符,后跟
“ello World”
,后跟换行字符

在我的系统(Ubuntu,xterm)上,当我运行你的程序(修复后)时,我看到:

因为我使用的终端模拟器忽略了空字符。显然,您使用的是打印空格或在打印空字符时仅向前移动光标的方法

不,没有任何值可以设置为
a
,这将导致程序只打印
Hello World

如果要修改程序以使用空字符串(确实存在)而不是空字符(不存在),可以:

#include <stdio.h>
int main(void) {
     char empty[] = "";
     printf("H%sello World\n", empty);
}
#包括
内部主(空){
字符为空[]=“”;
printf(“H%sello World\n”,空);
}

你期望什么?我期望Hello World为什么你期望这样?NUL终止字符是什么?
int()
应该是
int main()
,或者更好的是,
int main(void)
。你显然没有在你的系统上犯那个错误;如果你有,你的程序就不会编译,你也永远不会得到任何输出。始终将您的源代码复制并粘贴到问题中。不要让我们猜测你的程序中实际存在哪些错误,以及在重新键入时引入的错误。你期望什么?我期望Hello World为什么你期望这样?NUL终止字符是什么?
int()
应该是
int main()
,或者更好的是,
int main(void)
。你显然没有在你的系统上犯那个错误;如果你有,你的程序就不会编译,你也永远不会得到任何输出。始终将您的源代码复制并粘贴到问题中。不要让我们猜测你的程序中到底有哪些错误,以及你在重新键入时引入了哪些错误。非常感谢!我正在编写一个helper函数,它循环遍历每个变量以检查“\0”s.Re“实际上没有空字符”,当然有。它们被称为零宽度空间。U+200B零宽度空间用于标记可以插入中断的位置,U+FEFF零宽度无中断空间通常用作字节顺序标记(BOM)。@ikegami:取决于“空”的含义。并非所有的显示设备都必须一致地处理这些字符,如果您将这样的字符写入文件或通过类似
cat-a
hextump
的管道将程序输出,它将显示出来。非常感谢!我正在编写一个helper函数,它循环遍历每个变量以检查“\0”s.Re“实际上没有空字符”,当然有。它们被称为零宽度空间。U+200B零宽度空间用于标记可以插入中断的位置,U+FEFF零宽度无中断空间通常用作字节顺序标记(BOM)。@ikegami:取决于“空”的含义。并非所有的显示设备都必须一致地处理这些字符,如果您将此类字符写入文件或通过类似
cat-a
hextump
的管道将程序的输出显示出来。
#include <stdio.h>
int main(void) {
     char empty[] = "";
     printf("H%sello World\n", empty);
}