嗨,让我们说ı有这样的输入:
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返回第一行,无法读取如何获取我读过的行的参数
答案 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()你可以根据需要划分字符串