c - 如果字符串还包含字母,如何将 char 字符串转换为一个 int 数字

标签 c string char int

我有一个非常基本的问题,如果我有一串像这样的字符:char charv1[6] = "v445"v666 我怎样才能得到数字并将它们转换为单个整数,其值为:445666?

我一直在尝试这段代码,但出了点问题......:

            size = (strlen(charv1)-1);
            for(aux = size; aux > 0; aux--){
                if(aux == (size)){
                    v1 = charv1[aux]-'0';
                }
                else{

                    aux2 = (charv1[aux]-'0')*10;
                    printf("%d\n", aux2);
                    v1 = v1 + aux2;
                }
            }

charv1 包含字符串:v445etc

我记得几年前,我递归地做了,但我不记得是怎么做的,但现在我不需要一个优雅的解决方案......我需要一个可以正常工作的解决方案。

最佳答案

有一个名为 strtol() 的函数,它的用法如下:

 long dest = 0;
    char source[10] = "122";

    dest = strtol(source , NULL , 10); // arg 1 : the string to be converted arg2 : allways NULL arg3 : the base (16 for hex , 10 for decimal , 2 for binary ...)

但在您的情况下,您应该将此 dest = strtol(source , NULL , 10); 替换为此 dest = strtol((source + 1) , NULL , 10)dest = strtol(&source[1] , NULL , 10); 忽略第一个字符,因为 strtol 在它遇到的第一个非数字字符处停止

关于c - 如果字符串还包含字母,如何将 char 字符串转换为一个 int 数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19437955/

相关文章:

c - C 中传递指针

c - Linux C 忽略事件 x 秒

c - 使这个简单的代码线程安全

java - 为什么我不能在 '_' 语句中与 "if"char 进行比较?

c - atoi返回的值无法打印

c++ - 如何将 char* (具有每个可能的值)分配给 C++ 字符串

c - 如何杀死/结束/取消/加入套接字阻塞线程?

java - 如何检查 Java 字符串是否全是空格?

java - 从字符串中删除正则表达式

java - 根据模式拆分字符串的正则表达式