在C中将字符串的第一个字符读取为整数
Posted
技术标签:
【中文标题】在C中将字符串的第一个字符读取为整数【英文标题】:Read first character of string as integer in C 【发布时间】:2013-02-11 02:23:39 【问题描述】:如何将这个字符串的第一个字符读取为整数?
char *p = argv[1];
谢谢!
【问题讨论】:
看看atoi函数 【参考方案1】:您的问题模棱两可。以下是三种可能的解释及其答案。
C 中“字符串”的每个字符实际上都是一个小整数,您可以通过简单地对数组进行索引来检索它。
int first = p[0];
如果您知道字符串的第一个字符是一个数字并且您希望它的值作为一个数字,您可以利用'0'
到@987654323 的字符代码这一事实@ 保证是连续的并且增加的:
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
不仅不会告诉你,它还允许你的程序在数值溢出时崩溃。
【讨论】:
他还使用了 argv 这个名字,这可能意味着他在谈论的是一个二维数组的参数。以上是关于在C中将字符串的第一个字符读取为整数的主要内容,如果未能解决你的问题,请参考以下文章
javascript 在JavaScript中将字符串的第一个字母设为大写