簡體   English   中英

將非常量char *解析為C中的整數

[英]Parse non-const char* to integer in C

我對C庫函數strtol等感到困惑。我試圖在傳遞給strsep調用的char*緩沖區上使用它們(更改了指針的位置)。 但是,編譯器抱怨我將char*傳遞給strtol ,該strtol期望使用const char*

如果字符串不是const char*如何將其解析為整數? 在這種情況下,我不能使用常量,因為我有時需要更改數組中的值( stringsep也會更改數組開頭所指向的位置)。 謝謝。

編輯:這是我使用atoi嘗試(我知道現在不贊成使用它,但是它采用與strtol相同的類型參數,在切換到其他函數之前,我打算使它起作用。)

char *token, *freeme;
    freeme = input;

    while((token = (char*)(uint64_t)strsep(&input, " ")) != NULL) {
        printf("%s\n", token);

        current->next = malloc(sizeof(struct fraction_node));
        current = current->next;

        current->num = atoi(strsep(&token, "/"));
        current->denom = atoi(&token);

    }
    free(freeme);

(上下文是它正在解析分數列表。)

while((token = (char*)(uint64_t)strsep(&input, " ")) != NULL) {

完全壞了。

#define _BSD_SOURCE
#include <string.h>

while((token = strsep(&input, " ") != NULL) {

是嘗試修復它的簡單嘗試,但是當inputchar const *指針時不起作用。

    current->denom = atoi(&token);

也沒有道理; 你必須寫

    current->denom = atoi(token);

在轉換之前,請先復制字符串。

暫無
暫無

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

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