从文件中读取数字和字符

时间:2016-03-25 01:02:50

标签: c file

我在文件中遇到了一些麻烦。

我正在尝试从文件中读取数字和特殊字符。我给了一个包含数字和操作数的文件。从命令行读入该文件。

示例文件:

 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语句中进行测试并将其打印出来(无限循环),直到它出现故障。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

对于您的文件类型:

while((ch=fgetc(input)) != '0' )
  {
  /* your main processing */
  if (ch == '\n')
    {
    /* deal with end of expression */
    }

  }

拥有多个块和 fgetc(输入); 让每个人都感到困惑。