[英]Modifying non-const char array that is referred to by const char array
[英]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) {
是嘗試修復它的簡單嘗試,但是當input
是char const *
指針時不起作用。
該
current->denom = atoi(&token);
也沒有道理; 你必須寫
current->denom = atoi(token);
在轉換之前,請先復制字符串。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.