从scanf中解决null char

时间:2012-04-13 11:47:48

标签: c scanf strtok

我的strtok工作正常,但现在因为我使用scanf结束字符串NULL char我的程序只从重定向标准中获取一行。例如。

scanf("%s" , input);
    token = strtok (input, ", \n");

    while(token != NULL){
            i += (strtol(token,0,0)); 
            token = strtok(NULL, ", \n"); 

    }

所以我正在尝试使用函数来检查程序是否仅达到NULL的{​​{1}}(根据我的理解EOF = -1 EOF = 0)但我无法让指针和函数在我的代码中工作。附:我知道这是糟糕的代码,但现在已经很晚了,我还在继续努力,而我还在等待建议指出我错过的明显错误。

NULL

是否有一种我不了解的更简单的方法,或者我是否朝着正确的方向前进并且有很多错误?

谢谢,Lachlan

2 个答案:

答案 0 :(得分:0)

来自man scanf

 The  value  EOF is returned if the end of input is reached...

您只需要检查scanf的返回值,而不是strtok。类似的东西:

while(scanf("%s", input) != EOF)
   //just do it

答案 1 :(得分:-1)

检查您的scanf格式。

你错过了地址运营商'&'