2016-09-27 5 views
-3

文字列に問題がありますか?fprintf txtファイルにゴミを印刷しています

私は非常に簡単なことをしようとしています:intを文字列に変換し、それを以下の方法でtxtファイルに出力します。

const char * test_string() { 
    char s[5]; 
    int num = 123; 
    sprintf(s, "%d", num); 
    return s; 
} 

int save() { 
    FILE *fh = fopen("test.txt", "w"); 
    const char * text = test_string(); 
    fprintf(fh, "%s", text); 
    fclose(fh); 
} 

しかし、この単純なタスクのために、私は以下の結果を得ている:

Üþ(

私はこの問題でいくつかの支援をしたいと思います。前もって感謝します。

+1

関数からローカル変数のアドレスを返すには、関数が返された後に変数がもはや有効ではないため、未定義の動作があります。 –

+0

@KerrekSB:この質問に情報ページにdupを追加する必要があります。その質問は数日おきに尋ねられます。 – Olaf

+0

ありがとうございます。どうやらCは見た目より複雑です。 – miroki123

答えて

2

test_stringのローカル変数であるため、test_stringが返されたときに破棄されます。次に、存在しなくなった変数の値を出力しようとします。

+1

それは印刷される混乱は、その間にその空間を満たしてしまったことの文字列解釈。 – Carcigenicate

関連する問題