2017-08-01 197 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'; 
}