我想解析一个整数,但我的下面的代码也接受像“3b”这样的字符串,它以数字开头,但附加了字符。我如何拒绝这样的字符串?
$ awk '/itemAddBarCodeData/{print gensub(/(..)(..)(..) (..)(..)(..).*\/([^>]+).*/,"\\3-\\2-\\1,\\4:\\5:\\6,\\7",1)}' file
11-03-17,00:52:01,OK
11-03-17,00:53:23,NOREAD
答案 0 :(得分:4)
对于您的问题,您可以使用strtol()
库中的#include <stdlib.h>
功能。
如何使用strtol
(Sample code from tutorial points)
#include <stdio.h>
#include <stdlib.h>
int main(){
char str[30] = "2030300 This is test";
char *ptr;
long ret;
ret = strtol(str, &ptr, 10);
printf("The number(unsigned long integer) is %ld\n", ret);
printf("String part is |%s|", ptr);
return(0);
}
在strtol
内,它扫描str
,将单词存储在指针中,然后存储要转换的数字的基数。如果基数介于2和36之间,则将其用作数字的基数。但我建议将零置于10,这样它会自动选择正确的数字。其余的存储在ret
。
答案 1 :(得分:0)
ctype.h库为您提供函数isdigit(char)函数,该函数返回作为参数提供的char是否为数字。
你可以迭代argv [1]并以这种方式检查它。