我目前有一个以char数组形式接受用户输入的函数。我试图通过下面使用的函数解析输入,以及为使用的指针分配内存。但是,我期望用户输入的是两个字符“ab”和一个空格后跟一个整数。当我尝试将其转换为整数时,程序进入seg fault。我已经尝试分配更多的内存,改变数组的大小,任何帮助将不胜感激!
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
答案 0 :(得分:0)
malloc(sizeof(10))
可能是个错误。它不分配10个字节,但它分配足够的字节来保存int
。根据您计算机的体系结构,可能是4或8个字节。当您初始化malloc(10)
和firstW
时,您需要secondW
。