我正在學習如何爲char數組賦值,並且我需要執行一個操作,將一個數字和字符串拆分爲不同的變量並將其打印出來。我相信我很接近,但在打印出應該是我的號碼時,我會得到瘋狂的數字。這是int的地址嗎?任何意見是極大的讚賞!我的代碼和輸入/輸出:strtok和int vs char char C
#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);
}
一般'與strtol()'比'atoi將更好的選擇()'因爲與strtol更靈活,並且atoi對錯誤報告不屑一顧。 – 2014-09-12 13:35:33
甜,我現在得到它,非常感謝! – Branbron 2014-09-12 13:52:54
@John Hascall同意'strtol()'比'atoi()'更好,因爲它具有良好的錯誤處理能力。但是,這可能涉及諸如'errno = 0; char * endptr; long tmp = strtol(n,&endptr,10); if(endptr == n)Handle_NoConversion(); if(errno || tmp INT_MAX)Handle_Overflow(); n =(int)tmp;' –
chux
2014-09-12 15:18:08