提示: 文本文件包含一堆字符。文件中没有制表符。编写一个程序,用一个空格替换两个或多个连续的空格。该程序的输入应来自一个文件,该文件的名称是通过argv [1]提供的。该程序的输出应该转到标准输出。
问题:如何删除文本文件中的连续空格?
我已经启动了我的代码,但它编译但后来却没有做任何事情。我不知道我的代码出错了。我希望代码基本上模拟一个FMS,它说如果读入的文本连续两次等于一个空格,那么将文件放在那里,但是我无法正确打印出来。
输入:
Let’s go to the movies.
输出:
Let’s go to the movies.
我的书面代码:
#include <stdio.h>
int main(int argc, char* argv[]){
int i;
char c;
FILE* fin;
fin=fopen("textfile38", "r");
fscanf(fin,"%c", &c);
while((i=getchar()) !=EOF)
putchar(c);
if(i ==' ')
{
putchar(i);
}
else
{
putchar(' ');
}
printf("%c \n", c);
return 0;
}
我得到它返回L.我不是在阅读所有角色吗?任何帮助将不胜感激。
更新后的代码:
#include <stdio.h>
int main(int argc, char* argv[]){
char c;
FILE* fin;
fin=fopen("textfile38", "r");
while(fscanf(fin,"%c", &c) !=EOF){
if(c ==' ')
{
putchar(c);
}
else
{
putchar(' ');
}
printf("%c", c);
}
return 0;
}
唯一的问题是输入中的空间仍然存在,它的垂直打印也不是水平的,我不知道为什么。
答案 0 :(得分:1)
getchar()从stdin中读取一个字符,而您正在寻找从文件中读取的内容。你正在使用的fscanf工作,这就是为什么你看到L,但getchar()不会返回任何东西。继续使用fscanf()。