在C中读取字符串的第一个字符为整数

时间:2013-02-11 02:23:40

标签: c string atoi

如何将此字符串的第一个字符作为整数读取?

char *p = argv[1];

谢谢!

1 个答案:

答案 0 :(得分:5)

你的问题很模糊。以下是三种可能的解释及其答案。

  1. "字符串的每个字符"在C中实际上是一个小整数,您可以通过简单地索引数组来检索它。

    int first = p[0];
    
  2. 如果您知道字符串的第一个字符是数字,并且您希望其值为数字,则可以利用{{1}的字符代码这一事实通过'0'保证连续增加:

    '9'
  3. 如果您错过了,并且实际上想要将整个字符串作为十进制数处理,则可以使用int first_dv = -1; if (p[0] >= '0' && p[0] <= '9') first_dv = p[0] - '0'; strtol进行处理永远不应被解释为否定:

    strtoul

    这些是在char *endp; errno = 0; long numeric_value = strtol(p, &endp, 10); if (endp == p || *endp) { fprintf(stderr, "junk after number: %s\n", endp); } else if (errno) { fprintf(stderr, "%s: invalid number (%s)\n", p, strerror(errno)); } 中声明的。你使用<stdlib.h>atoi执行此操作,反对许多其他人会告诉您:sscanf不会告诉您是否有垃圾在数字之后,atoi不仅不会告诉您,还可以在数字溢出时使程序崩溃。