字符串函数返回seg错误

时间:2015-02-10 01:05:26

标签: c arrays string segmentation-fault

我目前有一个以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

1 个答案:

答案 0 :(得分:0)

malloc(sizeof(10))可能是个错误。它不分配10个字节,但它分配足够的字节来保存int。根据您计算机的体系结构,可能是4或8个字节。当您初始化malloc(10)firstW时,您需要secondW