C中 关于 puts()的输出问题?

C++语言 码拜 9年前 (2015-10-08) 1036次浏览

puts()函数在输出字符串的时候是怎么判断字符串结束的,我查得是:puts()函数在执行输出的时候,是以””\0″”来作为输出标志的,C风格的字符串的结束标志就是’\0‘,这个可以理解。
问题1:在C中,字符串就是字符数组,存在某些时候,我们不会自动在字符串结束的时候,加上””\0″”且编译器也不会自动添加,这个时候,puts()函数如何输出?有人说会报错。下面是运行结果C中  关于 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;
    }
运行结果怎么是C中  关于 puts()的输出问题?
问题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;
    }
代码运行结果C中  关于 puts()的输出问题?
多谢了。实在想不出为什么?

解决方案:100分

全局变量才是默认初始为 0
局部变量要这样 char string[20] = {0} 才能初始化为 0

puts 的行为没有什么可说的,主要是你这块内存里面的值的问题, 你可以先依次输出你着 24 个字节的内容,然后再调用 puts 来检查它的行为。


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明C中 关于 puts()的输出问题?
喜欢 (0)
[1034331897@qq.com]
分享 (0)