我在文件中遇到了一些麻烦。
我正在尝试从文件中读取数字和特殊字符。我给了一个包含数字和操作数的文件。从命令行读入该文件。
示例文件:
1 4 + 5*
2 - 4 + 8
7 -2 +1 +3
0
因此文件以0结尾,每个新行都是一个表达式。我的代码尝试做的是一次读入一个表达式
1 4 + 5 *
使用它,然后转到下一个表达式(直到文件读取0)。它还需要包含特殊字符(+,*, - ,ect)
到目前为止,这是我的代码。我不知道每个表达式的长度(它可以变化)所以我只是静态地声明它的长度为50。
int main(int argc, char* argv[]){
FILE* input;
char expression[50];
int i;
char ch;
input = fopen(argv[1], "r");
if(input == NULL){
printf("File does not exist! Exiting program!");
return 0;
}
do{
ch= fgetc(input);
if(ch == 0)
break;
while((ch != '\n')){
//printf("test2\n");
expression[i] = ch;
i++;
ch = fgetc(input);
}
//plan to do something with each expression here
} while(ch != EOF);
for(i=0; i < (strlen(expression)); i++)
printf("%c ", expression[i]);
return 0;
}
我在这里尝试的只是检查它是否会在表达式中读取并正确打印出来。当我尝试运行它时,我得到一个段错误,我在test2语句中进行测试并将其打印出来(无限循环),直到它出现故障。
非常感谢任何帮助。
答案 0 :(得分:0)
对于您的文件类型:
while((ch=fgetc(input)) != '0' )
{
/* your main processing */
if (ch == '\n')
{
/* deal with end of expression */
}
}
拥有多个而块和 fgetc(输入); 让每个人都感到困惑。