Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在C语言中提取子字符串_C_File_Substring - Fatal编程技术网

如何在C语言中提取子字符串

如何在C语言中提取子字符串,c,file,substring,C,File,Substring,我正在从一个文件中读取数据,我只需要从下面的数据中提取整数。我如何完成它?谢谢 我的输入将是field6,我需要删除这些字符“];”并将其存储在整数变量中 我的密码:- field6 = strtok(NULL," "); if (isdigit(field6)) { weight = atoi (field6); printf("%d\n",weight); } 输入: 43]; 2]; 4]; 16]; 25]; 输出: 43 2 4 16 25 如果没有sscanf,那么

我正在从一个文件中读取数据,我只需要从下面的数据中提取整数。我如何完成它?谢谢

我的输入将是field6,我需要删除这些字符“];”并将其存储在整数变量中

我的密码:-

field6 = strtok(NULL," ");
if (isdigit(field6))
{
   weight = atoi (field6);
   printf("%d\n",weight);
}
输入:

43];
2];
4];
16];
25];
输出:

43
2
4
16
25
如果没有sscanf,那么:

#include <stdio.h>

int main(int argc, char** argv)
{
  const char *test = "123];";

  int i = 0;

  const char *p = test;
  while (*p && isdigit(*p))
  {
    if (p != test) i *= 10;
    i += *p - '0';
    ++p;
  }

  if (*p != ']')
  {
    // we have an error!
    return 1;
  }

  printf("%i\n", i);
}
#包括
int main(int argc,字符**argv)
{
常量字符*test=“123];”;
int i=0;
常量字符*p=测试;
而(*p&isdigit(*p))
{
如果(p!=测试)i*=10;
i+=*p-'0';
++p;
}
如果(*p!=']'))
{
//我们有一个错误!
返回1;
}
printf(“%i\n”,i);
}
试试看

这是其中一种罕见的情况,在这种情况下,atoi完全可以执行您需要它执行的操作


未被检测到的错误条件是“];”,它将被解释为零。

Google
isdigit()
。对于其中一个scanf函数来说,这是一个完美的任务。@H2CO3但我的输入是一个字符串。@SOaddict但您可以通过取消对它的引用将它变成一个字符。。。你知道,指针:)@Troy“逐字符解析它是很多不必要的工作”,这取决于你想在错误的输入上做什么。
scanf
函数系列提供了非常有限的错误管理选择,更不用说在某些情况下的特殊行为了。它们总是很诱人,但并不总是一个好主意。+1表示几乎不需要libc。。。isdigit可以是
*p>='0'&&*p
field6 = strtok(NULL,"\n");
weight = atoi (field6);
printf("%d\n",weight);