如何将此字符串的第一个字符作为整数读取?
char *p = argv[1];
谢谢!
答案 0 :(得分:5)
你的问题很模糊。以下是三种可能的解释及其答案。
"字符串的每个字符"在C中实际上是一个小整数,您可以通过简单地索引数组来检索它。
int first = p[0];
如果您知道字符串的第一个字符是数字,并且您希望其值为数字,则可以利用{{1}的字符代码这一事实通过'0'
保证连续增加:
'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>
或atoi
执行此操作,反对许多其他人会告诉您:sscanf
不会告诉您是否有垃圾在数字之后,atoi
不仅不会告诉您,还可以在数字溢出时使程序崩溃。