怎么使用sscanf ,跳过一串数据,从确定位置开始读取数据??

假设文件内容如下:
21_as234g_13
21_as234g_97
21_as234g_032
21_as234g_9433
21_as234g_3944
怎么用sscanf只读出第二个下划线后面的数字?

int data; //保存第二个下划线后面的数字

FILE *fp=fopen("c:\\file.txt","r");

fscanf(fp,"%*[10]c%d%*[10]c",&data);//如果一个空格都没有的话,可以循环,用这个函数读出所有的数据 ,"%*[10]c表示跳出前10个数据,%d表示读出整形数据,\r\n表示跳过行尾
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-09-15
char *str = "21_as234g_13";
//每行的内容可以用CStdioFile的ReadString读出
//也可以在读取全部文件后用sscanf\r\n为标准切割成行

char buf[10];
int tmp;
memset(buf,0,10);
sscanf(str,"%*[^_]_%*[^_]_%s",buf);//得到*buf的值 13.
sscanf(str,"%*[^_]_%*[^_]_%d",&tmp);//得到tmp=13
第2个回答  2020-03-10
char str[32];

while(fgets(fp,line,1024)){

str[0] = '\0';

sscanf(line,"%*[^_]_%[^_]",str);
}
str里的值就是取出来的第二个下划线的内容

怎么使用sscanf ,跳过一串数据,从确定位置开始读取数据??
int data; \/\/保存第二个下划线后面的数字 FILE *fp=fopen("c:\\\\file.txt","r");fscanf(fp,"%*[10]c%d%*[10]c",&data);\/\/如果一个空格都没有的话,可以循环,用这个函数读出所有的数据 ,"%*[10]c表示跳出前10个数据,%d表示读出整形数据,\\r\\n表示跳过行尾 ...

相似回答