2013-03-14 75 views
1

這是我的一段代碼:一個一個char *的數組,並在後一個文件

char sentence[400]; 
FILE *f; 

const char *appname = application_name; //where the application_name comes from the program 
strcat(sentence,appname); 
... //I add more string 

f = fopen ("Test.txt", "a+"); 
... 
fprintf(f,"%s\n",sentence); 
fclose (f); 

結果的一個例子是:àB®pgAdmin III - Browser 什麼是àB®

當我添加printf("%s",appname)我可以在控制檯中看到正確的名稱,在pgAdmin III - Browser以上的例子中,爲什麼?

+0

如果您使用unicode,請閱讀'man fwprintf' – 2013-03-14 07:15:26

+1

char sentence [400] = {0};應該適合你... – 2013-03-14 07:18:13

+0

使用gcc,它會導致「使用未初始化的值」錯誤。所以初始化句子,這在C本身是一個隨機值(在堆棧上) – 2013-03-14 07:21:39

回答

4

sentence未初始化,您正在添加一些內容。最終結果是隨機垃圾,隨後是文字。使用strcpy或初始化sentence變量。

+0

我添加了'strcpy(sentence,「\ 0」);'現在它工作。非常感謝! – DarkCoffee 2013-03-14 07:19:00

+2

@DarkCoffee你可以簡單地寫'char句子[400] = {'\ 0'};'而不是。如果這個帖子回答了你的問題,請點擊左側的複選標記,接受它爲正確的。 – Lundin 2013-03-14 07:21:27

0

將strcat改爲strcpy你的程序會正常工作。

#include <stdio.h> 
    #include <string.h> 
    int main() 
    { 
    char sentence[400]; 
    const char *appname = "string_check"; 
    strcpy(sentence,appname); 
    printf("%s\n", sentence); 
    return 0; 
    } 
相關問題