删除空格 - C编程

时间:2011-11-13 20:00:03

标签: c

  

可能重复:
  Consecutive Blank space Removal in C

提示: 文本文件包含一堆字符。文件中没有制表符。编写一个程序,用一个空格替换两个或多个连续的空格。该程序的输入应来自一个文件,该文件的名称是通过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;
}

唯一的问题是输入中的空间仍然存在,它的垂直打印也不是水平的,我不知道为什么。

1 个答案:

答案 0 :(得分:1)

getchar()从stdin中读取一个字符,而您正在寻找从文件中读取的内容。你正在使用的fscanf工作,这就是为什么你看到L,但getchar()不会返回任何东西。继续使用fscanf()。