将数字字符串值转换为单个整数(不是ascii值)

时间:2018-08-01 13:53:57

标签: c dev-c++

我正在尝试将字符串“ 1234”转换为单个整数,例如n = 1234;

我为此使用了for循环,但是它保存了ASCII值而不是实际值

下面是代码

#include<stdio.h>

main()
{
    char lc[] = "12345";
    int i,n;
    p = lc;

    for(i=0;i<5;i++)
    {
        n = lc[i];
        printf("%d\n",n); 
    }
}

我想念什么??

4 个答案:

答案 0 :(得分:1)

如果通过“转换”表示打印,则应从字符中减去0的ascii值,然后将0的ascii打印为0,将1的ascii打印为等,

char lc[] = "12345";
int i,n;

for(i=0;i<5;i++)
{
    n = lc[i]-'0';
    printf("%d\n",n); 
}

答案 1 :(得分:1)

在您的情况下,您仅在每次迭代中将当前ASCII的值分配给n,正如您提到的那样,您想将String转换为int

一种简单而强大的功能,可以替代您的方式: atoi(string)

您的情况

 char lc[] = "12345";
 int n = atoi(lc);

答案 2 :(得分:0)

因为我们使用ascii 48代表数字0,所以一种简单的访问方式是用mod对其进行隐蔽,因为ascii定义为增量,所以{{1} }应该为49,依此类推。

1

如果您想将其保存回去,则可以执行以下操作:

#include<stdio.h>

main()
{

    char lc[] = "12345";
    int i,n;
    //p = &lc;
    int ascii_base=48;
    for(i=0;i<5;i++)
    {
        n = lc[i];
        printf("%d\n",n - ascii_base);
    }
    return 0;
}

答案 3 :(得分:0)

atoi的替代方法是使用sscanf,如果要转换一个字符串中的多个数字,尤其是当它们具有不同的类型(例如浮点数和整数)时,该方法很有用。您将需要包含stdio

char one_int[] = "12345";
char one_float = "3.14";
char a_float_and_an_int = "1024  6.28";

int first_int;
float first_float;
int second_int;
float second_float;

sscanf(one_int,"%d", &first_int);
sscanf(one_float, "%f", &first_float);
sscanf(a_float_and_an_int, "%d %f", &second_int, &second_float");