用sscanf删除字符串中的数字?

时间:2018-04-22 08:35:04

标签: c

我有一个编码的字符串,我想转换回来,例如,如果我在字符串中有1表示在我的结构中我会有e.nums_lins=1等等。

所以我想读取第一个元素,然后从字符串中删除,但一直尝试使用sscanf但没有进展。为什么这不起作用?

  int x ;
  sscanf(argumentos, "%d", &x) //argumentos is the initial string
  printf ("%d",x); //1st element

  printf ("\n");

  print (argumentos); // rest of the string

2 个答案:

答案 0 :(得分:1)

您可以考虑使用%n格式说明符。它将存储从输入到目前为止扫描的字符数。您可以使用它来偏移已经从输入字符串中解析的内容。

  int x, n;
  sscanf(argumentos, "%d%n", &x, &n);
  printf("%d\n", x);    
  printf("%s", argumentos + n); // rest of the string

答案 1 :(得分:0)

听起来你有像

这样的字符串
numlins1

表示e.nums_lins应设置为1。

如果就是这样,那么你需要像

这样的东西
sscanf(argumentos, "numlins%d", &e.nums_lins);

这里我假设argumentos包含字符串"numlins1"scanf将跳过常量字符串numlins,然后解析数字并将结果数字设为e.nums_lins

(但是,当你在结尾处“打印其余字符串”时,我不确定你要做什么。)