我将如何将该字符串的第一个字符读取为整数?
char *p = argv[1];
谢谢!
你的问题模棱两可。以下是三种可能的解释及其答案。
C 中“字符串”的每个字符实际上都是一个小整数,您可以通过简单地索引数组来检索它。
int first = p[0];
如果您知道字符串的第一个字符是 digit 并且您希望它的值是 digit,您可以利用这样一个事实,即'0'
through的字符代码'9'
保证是连续的并且不断增加:
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>
. 您不要使用or 执行此操作,与atoi
许多sscanf
其他人会告诉您的相反:atoi
不会告诉您数字后面是否有垃圾,sscanf
不仅不会告诉您,还允许您的程序在数字溢出时崩溃.