C - Malloc 问题(也许是别的)

标签 c arrays malloc

更新版本:

因此,我试图在不使用 scanf/fgets 的情况下使这段代码正常工作。从用户那里获取字符,使用嵌套在 for 循环中的 while 循环将其放入指针数组中。

#define WORDLENGTH 15
#define MAXLINE 1000

int main()
{
    char *line[MAXLINE];
    int i = 0;
    int j;
    int n;
    char c;


    for (n=0; c!=EOF; n){
        char *tmp = (char *) malloc(256);
        while ((c=getchar())!=' '){
            tmp[i]=c;     // This is no longer updating for some reason. 
            i++;
            }
        line[n++]=tmp; // 
        i=0;
        printf("\n%s\n",line[n]); //Seg fault here
    }

    for(j = 0; j (lessthan) n; j++){
        printf("\n%s\n", line[j]);
        free (line[j]);
    }

    return 0;

所以,现在我遇到了段错误。不确定为什么 tmp[i] 没有正确更新。仍在努力。

到目前为止,我从未在整个学期中学到这么多关于编程的知识。请继续帮助我学习。我喜欢这个。

最佳答案

您打印 line[i] 并且在此之前,您将 i 设置为 0。改为打印 line[n]

此外,您忘记了终止字符 0。如果您将 tmp 设为 char 数组,然后在分配给 line[n] 之前将其设为 strdup,您的代码将变得更简单。

关于C - Malloc 问题(也许是别的),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4331839/

相关文章:

c - 当我将数字传递给需要枚举的函数时,为什么我没有收到错误(或至少是警告)?

c - 使用 pthread 和同步

ruby-on-rails - ruby 中 case when 语句的替代方案

c - 如何在函数中使用 realloc 创建动态结构数组

C - 重新分配错误 : corrupted size vs prev_size

c++ - 在 MPI 中使用循环

c - 如何移动最大数量的矩阵

c - malloc(0) 有什么意义?

javascript - 此代码的时间复杂度和排序算法类型

c - malloc 对 RAM 使用没有影响,为什么?