簡體   English   中英

如何將以0開頭的數字字符串轉換為八進制數

[英]How to convert a numeric string starting with 0 to an octal number

我想這樣做:

void main(int argc, char *argv[]){
int mode,f;

mode = atoi(argv[2]);

if((f = open("fichero.txt",O_CREAT, mode))==-1){    
    perror("Error");
    exit(1);
}

}

但是,當我引入像0664這樣的數字時,模式等於664.如何保持前導零?

atoi函數假定字符串是數字的十進制表示。 如果您想從不同的基礎轉換,請使用strtol

mode = strtol(argv[2], NULL, 0);

第三個參數指定數字基數。 如果此值為0,則將字符串視為十六進制(如果以0x ,八進制(如果以0 0x ,否則為十進制。

如果您希望字符串始終是八進制表示,則將基數設置為8。

mode = strtol(argv[2], NULL, 8);

暫無
暫無

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

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