2017-08-01 129 views
-3

我的代码,以输出一串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); 
    } 
} 

然而,在是一个反向“^”每行的结尾。 (screenshot here

我该如何摆脱它?

+4

C字符串(是的,这是C),需要用一个空字符终止。 –

+0

您应该null终止As的字符串。使用'char s [501] = {0};' – sameerkn

+0

哦,它工作:) – Frodakcin

回答

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,所以你'd需要写这个代替:

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'; 
}