簡體   English   中英

C語言中的strtok和int vs char

[英]strtok and int vs char in C

我正在學習如何對char數組進行升華,並且需要執行將數字和字符串拆分為不同變量並將其打印出來的操作。 我相信我已經接近了,但是當打印出我的數字應該是瘋狂的數字時。 這是int的地址嗎? 任何意見是極大的贊賞! 我的代碼和輸入/輸出:

    #include <stdio.h>

    int main() {
        setbuf(stdout, NULL);
        char name[10];
        printf("Enter in this format, integer:name\n");
        fgets(name, 10, stdin);                            //my input was 2:brandon
        char *n = strtok(name, ":");
        int num = (int)n;
        char * order = strtok(NULL, ":");
        printf("%d,%s", num,order);                        //my output was 7846332,brandon
        return (0);
    }

如果輸入"123:foobar"作為輸入,則指針n指向字符串 "123" 當您將指針轉換為整數時,整數的值就是變量n的值,該變量n是由strtok返回的字符串在內存中的地址。

如果要將包含數字的字符串轉換為實際數字,則應使用例如strtol函數:

int num = strtol(n, NULL, 10);

這行是不正確的:

int num = (int)n;

這是int的地址嗎?

不,它是存儲整數的字符表示形式的位置處的字符緩沖區的地址,並重新解釋為int (即,它可能是截斷的地址,幾乎沒有意義的數字)。

您可以通過解析值或使用atoi將其轉換為int:

int num = atoi(n);

演示

暫無
暫無

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

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