我正在编写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'
时,指针将无法识别它。
有没有人可以帮助我呢?
答案 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')
;
}
}
遇到空白,制表符或换行符时,请增加计数器,然后读取尽可能多的空白,制表符或换行符。在这种情况下,内部循环读取其他字符并不重要。只是标记空白序列的末尾,外循环继续,直到读取下一个空白为止。