2016-08-28 7 views
0

最近、文字列のエスケープシーケンスをエスケープするプログラムを作ろうとしていました。すべてがうまく見え、まだプログラムをテストするときにエラーメッセージは表示されません。何も印刷されません。奇妙な動作printf-c lang

#include <stdio.h> 

#define MAXLINE 1000 

void escape(char s[], char t[]); 

int main() { 
char s[MAXLINE], t[MAXLINE]; 
int i, c; 
for (i = 0; (c = getchar()) != EOF; i++) 
    c = s[i]; 
    s[i] = '\0'; 
    escape(s, t); 
    printf("%s\n",t); 
    return 0; 
} 

void escape(char s[], char t[]) { 
    int j = 0, i; 
    for (i = 0; s[i] != '\0'; i++) { 
    switch (s[i]) { 
     case '\n': 
     t[j] = '\\'; 
     t[++j] = 'n'; 
     ++j; 
     break; 
     case '\t': 
     t[j] = '\\'; 
     t[++j] = 't'; 
     ++j; 
     break; 
     default: 
     t[j] = s[i]; 
     ++j; 
     break; 
    } 
    } 
    t[j] = '\0'; 
} 

ありがとうございます。

+0

これは何をするつもりですか?for(i = 0;(c = getchar())!= EOF; i ++) c = s [i]; '?入力と出力の例を教えてください。 –

答えて

2

ザ・main関数内のループがあるべきために:あなたはforループで

s[i] = c; 

の代わりに

c = s[i]; 

を使用している

for (i = 0; (c = getchar()) != EOF; i++) 
    s[i] = c; 
+0

Welp、素早い返答のおかげで、あなたの時間を無駄にしてすみません、それは非常にばかげた過ちでした。 –

2

。したがって、sは決して初期化されません。