初始化字符串时:
char pol [100];
打印它,我得到100次奇怪的we标志。 我的问题是如何初始化字符串,将其打印并仅获取空白? 谢谢!
答案 0 :(得分:2)
╠
是OEM 850代码页中的代码为0xCC
的字符。
在调试版本中,Visual C使用0xCC
初始化未初始化的数据,以帮助您检测未初始化的数据。
您应该初始化数组。
char pol[100] = {0};
或
char pol[100] = "test data";
答案 1 :(得分:1)
初始化字符串时: ...
变量pol
尚未初始化,仅被声明,因此,由于 C string 的定义,它甚至可能不是{{1 }} 在此刻。在这种状态下(例如在string
语句中使用它很危险,因为它可以调用 undefined behavior )。
更改此:
printf()
为此
char pol[100];
例如:
char pol[100] = {0};//initializes entire array to `0`.
答案 2 :(得分:0)
您可以执行以下操作:
char pol[100];
pol[0] = '\0';
第一个字符为null character
。
如果要使用所有数组:char pol[100] = {0}
;
以这种方式测试:
char test[100] = { 0 };
for (int i = 0; i < 100; i++)
printf("%c ", test[i]);
您可以在此处查看程序集:
对于x86的旧编译器,其生成方式如下:
push 100
push 0
lea eax, DWORD PTR _teste$[ebp]
push eax
call _memset
add esp, 12
在较新的版本上:
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
在Godbolt.org上进行测试,选择合适的编译器