0

我已经开始strtok工作了,但是现在因为我正在使用scanfNULLchar 结尾的字符串,所以我的程序只能从重定向的标准中抓取一行。例如。

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

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

    }

因此,我尝试使用函数来检查程序是否仅达到NULLa EOF(据我了解EOF = -1 NULL= 0),但我无法让指针和函数在我的代码中工作。PS我知道这是蹩脚的代码,但已经晚了,我仍在努力,等待建议指出我遗漏的明显错误。

int scanner();
int check_EOF();
int next_line(char *token);
int main(){

char *token, input[256];
int i = 0;


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

    if (!scanner())
        check_EOF();

printf("%d\n", i);
return 0;
}


int check_EOF(){
while(token !=EOF);
    next_line();
 }

int next_line(){
while(token != NULL){
    return 1;
else return 0;   
}

int scanner(){
while(next_line()){
        i += (strtol(token,0,0));
        token = strtok(NULL, ",")

    return 0
}

有没有一种我不知道的更简单的方法,或者我是否朝着正确的方向前进,但有很多错误?

谢谢,拉克兰

4

2 回答 2

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
于 2012-04-13T11:59:20.850 回答
-1

检查你的scanf格式。

您缺少地址运算符 '&' 。

于 2012-04-13T11:59:11.183 回答