c ++中的输出char数组生成奇怪的符号

时间:2017-08-01 05:03:36

标签: c++ string

我有这段代码将一堆A输出到一个文件(500行500 A')

int main() {
    FILE * output = fopen("somefile.txt", "w");

    //initialize string
    char s[500];
    for(int i = 0;i < 500;i++) {
        //set each letter to 'A'
        s[i] = 'A';
    }
    for(int i = 0;i < 500;i++) {
        //output the string 500 times
        fprintf(output, "%s\n", s);
    }
}

然而,有一个反向的&#39; ^&#39;在每一行的末尾。 (screenshot here

如何摆脱它?

1 个答案:

答案 0 :(得分:0)

这里更大的问题是你没有使用标准库,这会使你的问题变得无足轻重。在这里,您应该使用std::string,然后您不必担心内存或空终止符或其他任何内容:

#include <string>
int main()
{
    std::string s(500, 'A');
    for (int i = 0; i < 500; ++i)
        std::cout << s << std::endl;
}

但是,您之所以遇到这种情况的原因是因为printf requires a null-terminated string,所以您需要改为写这个:

char s[501] = {}; // default construct s so they're all null
for(int i = 0;i < 500;i++) {
    //set each letter to 'A'
    s[i] = 'A';
}