如何在C语言中提取子字符串
我正在从一个文件中读取数据,我只需要从下面的数据中提取整数。我如何完成它?谢谢 我的输入将是field6,我需要删除这些字符“];”并将其存储在整数变量中 我的密码:-如何在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 = 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);