前提・実現したいこと
コンソールから文字の入力受け取り、コンソール上に出力したい。
(単純なC言語プログラムのはず…)
発生している問題・エラーメッセージ
入力文字列の表示の後に文字化けした文字列が表示される。
input: hello output: hello フフフフフフフフフフヒヒレ}L
この最後の行がどこから来ているのかわかりません…
該当のソースコード
C
1#include <stdio.h> 2 3void getline(char s[], int lim); 4 5int main(void) { 6 7 char str[10]; 8 9 printf("input: "); 10 11 getline(str, 10); //strに入力するためのgetline関数を実行 12 13 14 printf("\noutput: %s\n", str); //strの表示 15 16 17 return 0; 18} 19 20 21//getline関数 22void getline(char s[], int lim) { 23 int c, i; 24 for (i = 0; i < lim - 1 && (c = getchar()) != '\n'; i++) { 25 //getchar()で改行'\n'まで読み込む 26 s[i] = c; 27 } 28 29 s[i] = '\n'; 30 31}
試したこと
strの長さ([10]やlim)を変更したところ、同様に変更されました。
strの表示(printf)は1度しかしていないのですが、strにもう一度入力されているのでしょうか?
補足情報(FW/ツールのバージョンなど)
Visual Studio 2017を使用し、デバッグで実行しています。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2020/05/16 05:48