解析整数而不在C中附加char

时间:2017-04-30 20:56:54

标签: c scanf

我想解析一个整数,但我的下面的代码也接受像“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

2 个答案:

答案 0 :(得分:4)

对于您的问题,您可以使用strtol()库中的#include <stdlib.h>功能。

如何使用strtolSample 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]并以这种方式检查它。