2011年6月6日星期一

  接收一组数据 形式%d%s%d ,其中%s可以由1个或2个字符组成,如果同时接受,怎么做?

比如要接受一个库存记录:

记录号码    工具名称     数量  
1       Tom Curious    5

如果用 scanf("%d%s%d") 显然行不通,各位兄弟有什么好办法?

 

#include 
#includ

int main() {
     int i, j;
     char s[100] = {0}, str[100];
     gets(str);                                // 将输入作为一个字符串读入
     sscanf(str, "%d%[^0-9]%d", &i, s, &j);    // 用 sscanf 把输入的字符串中的各个值提取出来。注意,这个不是正则表达式。
                                               // %[^0-9] 表示从当前位置起所有不为 '0' - '9' 的字符。
     printf("%d \"%s\" %d", i, s, j);
     return 0;
}

Bccn网友给出的完美答案。

没有评论:

发表评论