在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';
    

    如果您说错了,并且您确实想将 整个字符串 处理为十进制数,则可以使用 strtolstrtoul(如果该数字不应被解释为负数):

    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));
    
    

    这些在&lt;stdlib.h&gt; 中声明。您使用atoisscanf 这样做,与许多其他人会告诉你的相反:atoi 不会告诉你号码后面是否有垃圾,sscanf不仅不会告诉你,它还允许你的程序在数值溢出时崩溃。

【讨论】:

他还使用了 argv 这个名字,这可能意味着他在谈论的是一个二维数组的参数。

以上是关于在C中将字符串的第一个字符读取为整数的主要内容,如果未能解决你的问题,请参考以下文章

在 C++ 中将某种结构化的文本文件读入数组

javascript 在JavaScript中将字符串的第一个字母设为大写

在 C++ 中将字符转换为整数

如何在javascript中将字符串的每个单词的第一个字符大写? [复制]

在 C 中将字符串数组转换为 Int 数组的最佳方法

如何在C中将字符串常量转换为预处理标记