c - 为什么元素不留在数组中?

标签 c dynamic-memory-allocation

在这段代码中,我正在读取一个包含多行的文件。每行有 2 个单词,用\t 分隔。在读取文件时,我正在创建一个动态分配的表,该表由文件中左侧的单词列组成。问题是,数组行似乎只在循环中是正确的。当我尝试在循环外打印 rows[i] 时,元素消失了。对不起,如果我解释得不是很好,我是 C 语言的新手..!

char line[21];
int i=0;
FILE *infile=fopen("words.txt", "r");
if(infile == NULL){
    printf("The Input File is Null! Please Re-Run the program.");   
        return 1;             
}
int numofrows=11;
char **rows=malloc(sizeof(char*)*numofrows);
//read the file
while(fgets(line, sizeof(line), infile) != NULL) {
    english = strtok(line, search); //this is the word of the left column
    englength=strlen(english);//the length of the word
    for(i=0;i<numofrows;i++){
        rows[i] = malloc(11*sizeof(char));
        strcpy(rows[i], english);
    }
}
        //this doesnt work     
    for(i=0;i<numofrows;i++){    
            printf(rows[i]);
        }

最后一个 for 循环应该打印数组行中的每个单词,而不是打印任何内容。

最佳答案

您的语句 printf(rows[i]); 格式错误。试试 printf("%s", rows[i]);

关于c - 为什么元素不留在数组中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58418859/

相关文章:

c - 尝试将 fmemopen 文件描述符与 stdin 相关联时出现错误的文件描述符错误

c - 在 C 中使用带有 if else 的 switch 的简单计算器

c++ - 类的对象何时分配动态内存?

C - 指针释放后不为空

c++ - 在循环中使用 strtof 解析字符缓冲区中的数字

c - Valgrind-未初始化值消息

c - GCC 使用 -D 参数定义类似函数的宏

更改 simpleVRML 文件名错误

c - 我的 C 程序没有给出正确的结果

c++ - 关于操作 native 数组的快速问题