【发布时间】:2015-02-10 01:05:26
【问题描述】:
我目前有一个以 char 数组形式接受用户输入的函数。我试图通过下面使用的函数解析输入,以及为使用的指针分配内存。但是,我期望用户的输入是两个字符“ab”和一个空格,后跟一个整数。当我尝试将其转换为整数时,程序继续进行段错误。我已经尝试分配更多内存,更改数组的大小,任何帮助将不胜感激!
int input(char input[10])
{
int val;
char *firstW,*secondW;
firstW = malloc(sizeof(10));
secondW = malloc(sizeof(10));
firstW = strtok(input," ");
firstW = strstr(input,"ab");
secondW = strtok(NULL, " ");
val = atoi(secondW);
//When atoi is called, secondW contains any integer for instace "10", but of course as a string type
//trying to convert string to integer, but returns seg fault
【问题讨论】:
-
secondW 在哪里声明?调用 atoi 的时候里面是什么?
-
你永远不会检查
secondW != NULL。 -
如果
input源自字符串文字,这可能是问题 ---strtok修改了input(并且修改字符串文字是未定义的行为)。附带说明一下,firstW和secondW的mallocs 是多余的 ---strtok返回指向(已修改)input的指针。 -
secondW 使用 10 的值,使用 (mvprintw) 打印时,该值打印到屏幕上,所以我不认为它为 null。
标签: c arrays string segmentation-fault