我如何将该字符串的第一个字符读取为整数?
char *p = argv[1];
谢谢!
最佳答案
你的问题不明确。以下是三种可能的解释及其答案。
C 中“字符串”的每个字符实际上都是一个小整数,您可以通过简单地索引数组来检索它。
int first = p[0];
如果您知道字符串的第一个字符是数字,并且希望其值为数字,则可以利用字符代码
'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
不会告诉您号码后面是否有垃圾信息,并且sscanf
不仅不会告诉你这一点,它还允许在数字溢出时使你的程序崩溃。
关于c - 在 C 中将字符串的第一个字符读取为整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14805066/