如何从c中的文本输入中划分字符串

时间:2015-03-12 12:50:02

标签: c string io c-strings

嗨,让我们说ı有这样的输入:

set 15,10,55,20,30,-30,1
move 0,0
move 2,-1
move 0,0
move 1,-3
move 0,0
move 0,0
move 1,2
move 0,0
move 0,0
move 1,0
changemode 2
move 0,0
move 0,0
move 0,3
move 0,0
goback 1
changespeed 40,40
...
while(1)
    {
        if(fgets(command,128,fptr) != 0)
            {
                if(strncmp(command,"move",4)==0)
                    {
                        fscanf(fptr,"%s %d %d",inputcommand,firstargument,secondargumant);                        
                    }
                if(strncmp(command,"set",3)==0)
                    {
                     fscanf(fptr,"%s %d ....%d",inputcommand,firstargument,secondargumant........,sevenargument);   
                    }
              else{break;}
            }

fscanf返回第一行,无法读取如何获取我读过的行的参数

2 个答案:

答案 0 :(得分:0)

不要使用scanf。使用strtol。如果将非null值传递给第二个参数,strtol将使用逗号的地址填充它,并且您可以从那里继续解析。

答案 1 :(得分:0)

不要使用fscanf而是使用sscanf

if(strncmp(command,"move",4)==0)
                    {
                       sscanf(command,"%s %d %c %d",input,&a,&comma,&b);
                    }

使用sscanf()你可以根据需要划分字符串