[英]strtok and int vs char in C
我正在学习如何对char数组进行升华,并且需要执行将数字和字符串拆分为不同变量并将其打印出来的操作。 我相信我已经接近了,但是当打印出我的数字应该是疯狂的数字时。 这是int的地址吗? 任何意见是极大的赞赏! 我的代码和输入/输出:
#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);
}
如果输入"123:foobar"
作为输入,则指针n
指向字符串 "123"
。 当您将指针转换为整数时,整数的值就是变量n
的值,该变量n
是由strtok
返回的字符串在内存中的地址。
如果要将包含数字的字符串转换为实际数字,则应使用例如strtol
函数:
int num = strtol(n, NULL, 10);
这行是不正确的:
int num = (int)n;
这是int的地址吗?
不,它是存储整数的字符表示形式的位置处的字符缓冲区的地址,并重新解释为int
(即,它可能是截断的地址,几乎没有意义的数字)。
您可以通过解析值或使用atoi
将其转换为int:
int num = atoi(n);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.