最近私はK & R's Cの本からの練習に取り組んでいます:入力の各行から末尾の空白/タブを削除するプログラムを書く、bla bla bla 私はたくさんの方法の機能を使用して動作しませんでしたので、私は、メインの内側にすべてを置くことにしました()とそれだけでいずれも動作しません。ここでは、コードです:。!末尾の空白を削除するプログラムは機能しません! :
#include <stdio.h>
#define MAX_INPUT 100
#define ACTIVE 1 //quit with Ctrl + C
void main(){
int i, nb, nt;
char c;
char line[MAX_INPUT];
char corrected[MAX_INPUT];
while(ACTIVE){
//get current line
for(i = 0; i < MAX_INPUT - 1 && (c = getchar()) != EOF && c != '\n'; i++)
line[i] = c;
if(c == '\n'){
line[i] = c;
}
line[i + 1] = '\0';
//correct current line
nb = nt = 0;
for(i = 0; line[i] != '\0'; i++){
if(line[i] == ' '){
nb++;
if(nb == 1)
corrected[i] == line[i];
}
else{
if(line[i] == '\t'){
nt++;
if(nt == 1)
corrected[i] == line[i];
}
else
corrected[i] == line[i];
}
}
corrected[i] == '\n';
corrected[i + 1] == '\0';
//print corrected line
printf("%s", corrected);
}
}
は、私は "を印刷したい時で、だから、現在の行の「修正済み」バージョンであれば、代わりに以下を出力します:
�
本当に助けていただければ幸いです。私は一週間中これを試してきましたが、それは私がエラーを見つけることができないという事実を私に夢中にさせています。xD あなたの注目を集めてくれてありがとう! =
が代入演算子ある間:)
corrected[i] = line[i];
corrected[i] = '\n';
corrected[i + 1] = '\0';
==
に
静的解析(linting)や、より良いコンパイラフラグに真剣に投資する必要があります。エディタにプログラムを置いて、コンパイルする前に、「clang」から[警告5件、メモ5件](http://i.imgur.com/SiYKEsV.png)を取得します。 'gcc bad.c -Wall'は[同様の警告](http://hastebin.com/xayuyixufa)を示しています。 – Oka
KernighanとRitchieは、それが 'int main'と言うでしょう。 –