我正在学习如何为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