为什么我在C中创建的新字符串有╠;而不是空白?

为什么我在C中创建的新字符串有╠;而不是空白?,c,C,初始化字符串时: charpol[100] 打印出来,我觉得很奇怪╠ 签100次。 我的问题是如何初始化一个字符串,打印它并且只得到空白? 谢谢 初始化字符串时: 变量pol尚未初始化,仅声明,因此,由于的定义,此时可能是或可能不是字符串。在这种状态下使用它(例如在printf()语句中)是危险的,因为它可以调用 更改此项: char pol[100]; 对此 char pol[100] = {0};//initializes entire array to `0`. 或者,例如: char

初始化字符串时:

charpol[100]

打印出来,我觉得很奇怪╠ 签100次。 我的问题是如何初始化一个字符串,打印它并且只得到空白? 谢谢

初始化字符串时:

变量
pol
尚未初始化,仅声明,因此,由于的定义,此时可能是或可能不是
字符串。在这种状态下使用它(例如在
printf()
语句中)是危险的,因为它可以调用

更改此项:

char pol[100];
对此

char pol[100] = {0};//initializes entire array to `0`.
或者,例如:

char pol[100] = {"temporary"};//initializes to |t|e|m|p|o|r|a|r|y|0|?|?|?|?|
                              //which is a null terminated string
初始化字符串时:

变量
pol
尚未初始化,仅声明,因此,由于的定义,此时可能是或可能不是
字符串。在这种状态下使用它(例如在
printf()
语句中)是危险的,因为它可以调用

更改此项:

char pol[100];
对此

char pol[100] = {0};//initializes entire array to `0`.
或者,例如:

char pol[100] = {"temporary"};//initializes to |t|e|m|p|o|r|a|r|y|0|?|?|?|?|
                              //which is a null terminated string
您可以通过以下方式实现:

char pol[100]; 
pol[0] = '\0'; 
第一个字符将是
空字符


如果需要所有数组:
charpol[100]={0}

通过以下方式进行测试:

char test[100] = { 0 };

for (int i = 0; i < 100; i++)
    printf("%c ", test[i]);
在较新版本上:

lea     rdx, [rbp-112]
mov     eax, 0
mov     ecx, 12
mov     rdi, rdx
rep stosq
mov     rdx, rdi
mov     DWORD PTR [rdx], eax
add     rdx, 4       
在选择合适的编译器时对其进行测试

您可以使用:

char pol[100]; 
pol[0] = '\0'; 
第一个字符将是
空字符


如果需要所有数组:
charpol[100]={0}

通过以下方式进行测试:

char test[100] = { 0 };

for (int i = 0; i < 100; i++)
    printf("%c ", test[i]);
在较新版本上:

lea     rdx, [rbp-112]
mov     eax, 0
mov     ecx, 12
mov     rdi, rdx
rep stosq
mov     rdx, rdi
mov     DWORD PTR [rdx], eax
add     rdx, 4       

在选择合适的编译器时测试它

是OEM 850代码页中带有code
0xCC
的字符

在调试版本中,Visual C使用
0xCC
初始化未初始化的数据,以帮助您检测未初始化的数据

您应该初始化数组

char pol[100] = {0};


是OEM 850代码页中带有code
0xCC
的字符

在调试版本中,Visual C使用
0xCC
初始化未初始化的数据,以帮助您检测未初始化的数据

您应该初始化数组

char pol[100] = {0};


char pol[100]={0}
将数组的所有元素初始化为0。然而,
char pol[100]={1}
将第一个元素初始化为1,其余元素初始化为0。记住这一点。请添加
在声明之后,初始化为char pol[100]={0},谢谢第一个字符它是空字符。那么其余的字符呢?就像@UnholySheep所说的,用
0
初始化所有数组
char pol[100]={0}
将数组的所有元素初始化为0。然而,
char pol[100]={1}
将第一个元素初始化为1,其余元素初始化为0。记住这一点。请添加
在声明之后,初始化为char pol[100]={0},谢谢第一个字符它是空字符。其余的字符呢?如@UnholySheep所说,用
0
初始化所有数组。╠ 代码页437中的0xCC表示。你可以找到很多关于你的问题╠ 这里是0xCC,以此类推,╠ 代码页437中的0xCC表示。你可以找到很多关于你的问题╠ 这里是0xCC,以此类推,这与我无关。这是吹毛求疵。但是,好吧,更新的.437更有可能,但我想这与ASCIW无关,这是吹毛求疵。但是,好吧,更新了.437的可能性更大,但我想那会很挑剔