larry*wei 2018-11-05 04:17 采纳率: 0%
浏览 273

避免文件中出现空白

I'm writing a C code trying to avoid a blanks in a File. I just want to count one on every occurrence of the concatenated blanks.
For instance, if I have something like this:
This is just a test
Whit any blanks like '\n', ' ' or \t between that words. I've tried this:

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);
            ************************************************\
        }

Like you can notice, the above function is just a part. At the beginning I have the first instruction:
while( (current_c = fgetc(file)) != EOF )
And to work with fsetpos() and fgetpos() a declarative fpos_t position;.
I've a little troubles. If you run the code you could get a mistake. When the occurrence is '\n', the pointer doesn't recognizes it.
Is there anyone how could help me with that?

转载于:https://stackoverflow.com/questions/53148278/avoiding-the-blank-in-files

  • 写回答

1条回答 默认 最新

  • 叼花硬汉 2018-11-05 05:38
    关注

    If you need to count the number of sequences of one or more blank, tab, or newline characters, then the code is basically trivial:

    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')
                ;
        }
    }
    

    When you encounter a blank, tab or newline, increment the counter, then read as many more blanks, tabs or newlines as are available. In this context, it doesn't matter that the inner loop reads some other character; that simply marks the end of the blank sequence and the outer loop resumes until the next white space is read.

    评论

报告相同问题?

悬赏问题

  • ¥15 Stata 面板数据模型选择
  • ¥20 idea运行测试代码报错问题
  • ¥15 网络监控:网络故障告警通知
  • ¥15 django项目运行报编码错误
  • ¥15 请问这个是什么意思?
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样
  • ¥15 java的GUI的运用