puts()函数在输出字符串的时候是怎么判断字符串结束的,我查得是:puts()函数在执行输出的时候,是以””\0″”来作为输出标志的,C风格的字符串的结束标志就是’\0‘,这个可以理解。
问题1:在C中,字符串就是字符数组,存在某些时候,我们不会自动在字符串结束的时候,加上””\0″”且编译器也不会自动添加,这个时候,puts()函数如何输出?有人说会报错。下面是运行结果
问题2: #include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
int i;
char string[20];
for(i=0;i<3;i++)
string[i]=””a””;
//string[3]=””\0″”;
string[3]=””A””;
puts(string);
return 0;
}
运行结果怎么是
问题3: 下面
#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
int i;
char string[20];
for(i=0;i<3;++i)
string[i]=””a””;
string[3]=””\0″”;
string[3]=””A””;
puts(string);
return 0;
}
代码运行结果
多谢了。实在想不出为什么?
全局变量才是默认初始为 0
局部变量要这样 char string[20] = {0} 才能初始化为 0
puts 的行为没有什么可说的,主要是你这块内存里面的值的问题, 你可以先依次输出你着 24 个字节的内容,然后再调用 puts 来检查它的行为。