删除尾随空白的程序不起作用! :(
Program to remove trailing blanks not working! :(
最近我一直在做 K & R 的 C 书中的练习,其中指出:编写一个程序来删除每行输入中的尾随空格/制表符,bla bla bla。
我已经尝试了很多使用函数的方法,但都没有用。所以我决定将所有内容都放在 main() 中,但它也不起作用!这是代码:
#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] = '[=10=]';
//correct current line
nb = nt = 0;
for(i = 0; line[i] != '[=10=]'; 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] == '[=10=]';
//print corrected line
printf("%s", corrected);
}
}
所以,当我想打印当前行的 "corrected" 版本时,它打印了这个:
�
非常感谢您的帮助。我整个星期都在尝试这个,这让我发疯,因为我找不到错误 xD
感谢您的关注,伙计们! :)
改变
corrected[i] == line[i];
corrected[i] == '\n';
corrected[i + 1] == '[=10=]';
到
corrected[i] = line[i];
corrected[i] = '\n';
corrected[i + 1] = '[=11=]';
==
是相等运算符,而 =
是赋值运算符。
您正在使用比较运算符 ==
而不是赋值运算符 =
。
最近我一直在做 K & R 的 C 书中的练习,其中指出:编写一个程序来删除每行输入中的尾随空格/制表符,bla bla bla。 我已经尝试了很多使用函数的方法,但都没有用。所以我决定将所有内容都放在 main() 中,但它也不起作用!这是代码:
#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] = '[=10=]';
//correct current line
nb = nt = 0;
for(i = 0; line[i] != '[=10=]'; 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] == '[=10=]';
//print corrected line
printf("%s", corrected);
}
}
所以,当我想打印当前行的 "corrected" 版本时,它打印了这个:
�
非常感谢您的帮助。我整个星期都在尝试这个,这让我发疯,因为我找不到错误 xD 感谢您的关注,伙计们! :)
改变
corrected[i] == line[i];
corrected[i] == '\n';
corrected[i + 1] == '[=10=]';
到
corrected[i] = line[i];
corrected[i] = '\n';
corrected[i + 1] = '[=11=]';
==
是相等运算符,而 =
是赋值运算符。
您正在使用比较运算符 ==
而不是赋值运算符 =
。