在这段代码中,我正在读取一个由许多行组成的文件。每行有2个字,以\ t分隔。在读取文件时,我正在创建一个动态分配的表,该表由文件中的单词的左列组成。问题是,数组行仅在循环中才是正确的。当我尝试在循环外打印row [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循环应该打印数组行中的每个单词,相反,什么都没有打印。
在这段代码中,我正在读取一个由许多行组成的文件。每行有2个字,以\ t分隔。在读取文件时,我正在创建一个动态分配的表,该表由...
您的陈述printf(rows[i]);
格式不正确。试试printf("%s", rows[i]);
请确保将每行都写入阵列中的新插槽。稍后,在打印阵列时,请确保不要读取比以前存储的行更多的行。