簡體   English   中英

將數字字符串值轉換為單個整數(不是ascii值)

[英]convert numeric string values into a single integer (not ascii values)

我正在嘗試將“ 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); 
    }
}

我想念什么??

如果通過“轉換”表示打印,則應從字符中減去0的ascii值,然后將0的ascii打印為0,將asci表示為an等等,

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

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

在您的情況下,您僅在每次迭代中將當前ASCII值分配給n ,如您提到的那樣,您想將String轉換為int

一個簡單而強大的函數可以替代您的方法: atoi(string)

在您的情況下

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

因為我們使用ascii 48代表數字0 ,所以一種簡單的訪問方式就是用mod it對其進行隱蔽,因為ascii用增量定義,所以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;
}

如果您想將其保存回去,可以執行以下操作:

#include<stdio.h>

main()
{

    char lc[] = "12345";
    int ln = sizeof lc;
    int i,n;
    //p = &lc;
    int ascii_base=48;
    for(i=0;i<5;i++)
    {
        n = lc[i];
        ln[i]=n - ascii_base;

    }
    printf("%s\n", ln);
    return 0;
}

atoi的替代方法是使用sscanf ,如果要轉換一個字符串中的多個數字,特別是當它們具有不同的類型(例如浮點數和整數)時,使用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");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM