关于sscanf的问题
来源:百度知道 编辑:UC知道 时间:2024/06/30 05:42:27
for(i=0;i<lines;i++)
{
sscanf(s[i],"%d",&datas[num++]);
for(j=1;j<40;j++)
if(s[i][j]=='\t')
sscanf(s[i]+j+1,"%",&datas[num++]);
}
这样的话数据都变成无穷小的数,程序错在哪?
char *s[300];
str=new char[255];
double *datas;
datas=new double[2000];
int num=0,i=0,lines,j;
for(i=0;i<300;i++)
s[i]=new char [40];
i=0;
while(inf.getline(str,255))
{
strcpy(s[i++],str);
}
s[i]是第i行字符串的地址,调用cout<<s[i]可正确输出。
还有原题中"%d"应为"%fl".
我想知道的是,如何用sscanf将含tab的字符串中的数据读出来。
请检查你的s[i]是什么内容,还有第二个sscanf少了一个d,是%d!
================
"%fl" 你写反了,是lf( long float)
sscanf(...,"%lf\t",d);可以读
具体你看下面的msdn吧
Read formatted data from a string. These functions are deprecated because more secure versions are available; see sscanf_s, _sscanf_s_l, swscanf_s, _swscanf_s_l.
int sscanf(
const char *buffer,
const char *format [,
argument ] ...
);
int _sscanf_l(
const char *buffer,
const char *format,
locale_t locale [,
argument ] ...
);
int swscanf(
const wchar_t *buffer,
const wchar_t *format [,
argument ] ...
);
int _swscanf_l(
const wchar_t *buffer,
const wchar_t *format,
locale_t locale [,
argument ] ...
);
Parameters
buffer
Stored data
format
Format-control string. For more information, see Format Specifi