我想从输入行中提取一些数字,这是一个字符串。字符串如下所示:
command 1 2 3 4 5
到目前为止,我已经完成了这项工作,但它无法正常工作:
if ( strncmp(line,"command",7) == 0 ){
char *p = strtok(line," ");
while ( p !=NULL){
param1 = atoi(p[1]);
param2 = atoi(p[2]);
param3 = atoi(p[3]);
param4 = atoi(p[4]);
param5 = atoi(p[5]);
p = strtok(NULL," ");
}
}
我哪里错了?
答案 0 :(得分:3)
使用sscanf可能更简单:
if (strncmp(line, "command", 7) == 0)
{
sscanf(&line[8], "%d %d %d %d %d", ¶m1, ¶m2, ¶m3, ¶m4, ¶m5);
}
答案 1 :(得分:3)
为什么你& p [1]? p是指向while循环中当前标记的指针。它不会像你期望的那样给你所有的元素。
您可以将param声明为数组:int param [5];
并重写循环,如:
int i=0;
while ( p !=NULL){
param[i++] = atoi(p);
p = strtok(NULL," ");
}
如果你想使用5个变量,比如param1,param2 ....等,你必须扩展循环并手动编写,这不是一个好主意。
答案 2 :(得分:-1)
#include <string.h>
int main(){
char line[]="command 1 2 3 4 5";
if ( strncmp(line,"command",7) == 0 ){
char *p = strtok(line," ");
while ( p !=NULL){
printf("%s\n",p);
p = strtok(NULL," ");
}
}
}