【发布时间】:2019-04-08 10:50:26
【问题描述】:
我正在编写 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' 时,指针无法识别它。
有没有人可以帮我解决这个问题?
【问题讨论】:
-
如果您提供 MCVE (minimal reproducible example) 会有所帮助。您以
\************************************开头的符号不是评论;您使用了反斜杠而不是(正向)斜杠/。这意味着代码无法编译,这意味着很难知道你在做什么。然而,使用fgetpos()和fsetpos()似乎完全没有必要。你当然可以使用justfgetc()` 和ungetc()来处理它——尽管不需要使用ungetc()。您可能也应该使用来自<ctype.h>标头的isspace()或isblank()。
标签: c pointers file-io counting file-pointer