【发布时间】:2018-10-14 17:50:59
【问题描述】:
开始学习C;我正在尝试读取和处理字符,同时丢弃空白字符。我还需要确定它是注释“#”还是下一个输入值的第一个字符。目标是获取幻数、宽度、高度和 maxval 并将其写入新文件。
int main (int argc, char **argv)
{
char buffer[100];
int num_chars = 0;
FILE *input;
input = fopen(argv[1], "rb");
FILE *output;
output = fopen(argv[2], "w");
if (input == NULL){
printf("ERROR: Input file needed!");
return -1;
}
if (output == NULL){
printf("ERROR: Output file needed!");
return -1;
}
for (int i = fgetc(input); i != EOF; i = fgetc(input)) {
if (isspace(i)){
printf("The magic number is: %c\n", i);
ungetc(i, input);
} else if (i == '#') {
for (int j = i; isspace(j); j = fgetc(input)){
buffer[num_chars++] = j;
printf("Comment found: %c\n", j);
ungetc(i, input);
}
}
}
return 0;
}
编辑:使用了建议的 isspace 函数,但是创建了一个无限循环而没有看到如何。我很抱歉,但我不确定我应该问什么样的问题。
【问题讨论】:
-
你的编译器没有告诉你出了什么问题?始终打开一组健康的警告(使用
-Wall -Wextra编译 gcc 和 clang)。 -
感谢您的信息!