0

私は仕事をしていますが、文字列をcharで終了するものstrtokを使用しているため、プログラムはリダイレクトされた標準から1行しか取得していません。scanfNULL

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

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

    }

そのため、関数を使用して、プログラムが(私が理解していることから = -1 = 0)NULLのaに到達したかどうかを確認しようとしていますが、コードでポインターと関数を機能させるのに問題があります。PS私はそれがくだらないコードであることを知っていますが、それは遅く、私が見逃している明らかなエラーを指摘する提案を待っている間、私はまだそれに取り組んでいます。EOFEOFNULL

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 に答える