将字符串读入char *数组时发生段故障

时间:2017-12-07 00:21:29

标签: c linux segmentation-fault

我正在尝试读取一些字符串,然后将它们打印成矩阵形式。

int main(int argc, char **argv)
{
    char *buffer[BUFFER_SIZE];
    for(size_t i = 0; i < BUFFER_SIZE; i++)
    {
        scanf("%s",buffer[i]);  /**This line is causing segment fault **/
    }

    for(size_t i = 0; i < BUFFER_SIZE; i++)
    {
        for(size_t j = 0; j < strnlen(buffer[i], MAX); j++ )
        {
            printf("%c ",buffer[i][j]);
        }
        printf("\n");
    }

}

有什么建议我在这里缺少什么?

1 个答案:

答案 0 :(得分:3)

char *buffer[BUFFER_SIZE]是一个字符指针数组。您的代码现在的方式buffer[i]char *,在您scanf("%s",buffer[i])时未初始化。您需要为malloc分配内存(可能是scanf),以便在此之前存储字符串。