关于C语言中字符串和sscanf的问题
有一个字符数组char*p="11213156987456321456";怎样把其中的数读入到一个数组中,比如:char*p="11213156987456321456"...
有一个字符数组
char *p="1 12 13 1 5 6 9 8 7 4 5 6 3 2 1 4 5 6";
怎样把其中的数读入到一个数组中,比如:
char *p="1 12 13 1 5 6 9 8 7 4 5 6 3 2 1 4 5 6";
int a[18];
int i;
for(i=0;i<18;i++)
sscanf(p,"%d",&a[i]);
最终结果却只是把p中第一个数反复读了18遍,请问该怎样改才能把数据全部读入!
谢谢! 展开
char *p="1 12 13 1 5 6 9 8 7 4 5 6 3 2 1 4 5 6";
怎样把其中的数读入到一个数组中,比如:
char *p="1 12 13 1 5 6 9 8 7 4 5 6 3 2 1 4 5 6";
int a[18];
int i;
for(i=0;i<18;i++)
sscanf(p,"%d",&a[i]);
最终结果却只是把p中第一个数反复读了18遍,请问该怎样改才能把数据全部读入!
谢谢! 展开
1个回答
展开全部
你这样读取导致sscanf内部指针并没有往下移动
#include <iostream>
using namespace std;
int main()
{
char *p="1 12 13 1 5 6 9 8 7 4 5 6 3 2 1 4 5 6";
char temp[100];
strcpy(temp, p);
int a[18];
int i;
for(i=0;i<18;i++)
sscanf(temp,"%d %[ 0-9]",&a[i],temp);
for(i=0;i<18;i++)
printf("%d\n", a[i]);
return 0;
}
#include <iostream>
using namespace std;
int main()
{
char *p="1 12 13 1 5 6 9 8 7 4 5 6 3 2 1 4 5 6";
char temp[100];
strcpy(temp, p);
int a[18];
int i;
for(i=0;i<18;i++)
sscanf(temp,"%d %[ 0-9]",&a[i],temp);
for(i=0;i<18;i++)
printf("%d\n", a[i]);
return 0;
}
更多追问追答
追问
可是我这里用的是C,没有iostream
追答
这只是我用了c++的头文件而已,你可以不用管
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询