避免文件中出现空白

时间:2018-11-05 04:17:45

标签: c pointers file-io counting file-pointer

我正在编写C代码,试图避免文件中出现空格。我只想在每次出现的级联空白中算一个。
例如,如果我有这样的事情:
This is just a test
在这些单词之间插入'\n'' '\t之类的空格。我已经尝试过了:

if( (current_c == ' ') || (current_c == '\t') || (current_c == '\n') ){
            blank_counter++;
            do{
                fgetpos(file, &position);
            } while( (fgetc(archivo) == ' ') || (fgetc(archivo) == '\t') || (fgetc(archivo) == '\n') );
            fsetpos(file, &position);
            \***********************************************
            *******This is just debugging block*************
            printf("The current char: %c\n", current_c);
            fputc(c, file);
            ************************************************\
        }

就像您注意到的那样,以上功能只是其中一部分。一开始我有第一个指示:
while( (current_c = fgetc(file)) != EOF )
并与fsetpos()fgetpos()一起使用声明性fpos_t position;
我有点麻烦。如果运行代码,可能会出错。当出现的是'\n'时,指针将无法识别它。
有没有人可以帮助我呢?

1 个答案:

答案 0 :(得分:0)

如果您需要计算一个或多个空格,制表符或换行符的序列数,则该代码基本上是微不足道的:

FILE *archivo = …
int c;
int blank_counter = 0;
while ((c = getc(archivo)) != EOF)
{
    if (c == ' ' || c == '\t' || c == '\n')
    {
        blank_counter++;
        while ((c = getc(archivo)) != ' ' && c != '\t' && c != '\n')
            ;
    }
}

遇到空白,制表符或换行符时,请增加计数器,然后读取尽可能多的空白,制表符或换行符。在这种情况下,内部循环读取其他字符并不重要。只是标记空白序列的末尾,外循环继续,直到读取下一个空白为止。