使用fscanf()将单词输入到二维数组中

时间:2017-04-05 21:58:12

标签: c arrays pointers multidimensional-array scanf

我在使用fscanf()方面遇到了一些问题。我的主要目标是从输入文件中取出每个单词,并将它们按顺序放入char的二维数组中,如下所示:

Ex:
words[0][] = The
words[1][] = Quick
words[2][] = Brown
words[3][] = Fox
...

我尝试了其他一些方法,例如fgetc(),并使用嵌套的for循环将每个字符放在他们的位置。当显然有更简化的方法时,这看起来有点矫枉过正。它的方式,在每次迭代时,wordList包含要读取的下一个单词。我如何将wordList的当前值(在每次迭代中)按顺序分配到2d数组?

我当前(相关)的代码:

int main (int argc, char *argv[]) {
FILE *fPtr;
char words[200][50];
char *wordList;

    if (fPtr = fopen(argv[2], "r")) {                          // If the file exists, open it for reading
            while(fscanf(fPtr, "%49s", wordList) == 1) {            // Read in strings from main file into wordList
         // strcpy(words, wordList);
    } else {       
        fprintf(stderr, "%s", "ERROR: File could not be opened.\n");
        return 0;
    }
    fclose(fPtr);
    return 0;
}   

可以安全地假设要读取的最大字数小于200.可以假设每个字的长度小于50个字符。

0 个答案:

没有答案