使用fscanf在文件中存储文件中的单词

时间:2016-05-11 01:58:39

标签: c arrays scanf

我正在尝试编写一个程序,用于使用fscanf读取文件的一些类作品,然后将每个单词存储到一个数组中,每个元素中包含一个单词。然后我需要将数组的每个元素打印到控制台上的新行。

getty.txt文件中包含Gettysburg地址,并带有适当的间距,标点符号,并且是多行的。

我认为正在发生的是整个文本存储在数组的第一个元素中,但我并不是100%确定,因为我仍在学习调试和用C语言编写。

关于我做错的任何建议都会很棒!我目前似乎只是得到了最后一个字和一些额外的字符。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>

void readFile();
void writeFile(char* buffer, int bufferlen);
FILE *fpread;
FILE *fpwrite;

char filebuffer[1000];
int filebufferlen = 0;


int main(int argc, char *argv[]) {
    fpwrite = fopen("csis.txt", "w");

    readFile();
    writeFile(filebuffer, filebufferlen);

    fclose(fpwrite);
    return 0;
}

void readFile() {
    char c;
    filebufferlen = 0;

    if(!(fpread = fopen("getty.txt", "r"))){
        printf("File %s could not be opened. \n", "getty.txt");
        fprintf(fpwrite,"File %s could not be opened. \n",     "getty.txt");
    exit(1);
}

    while (!feof(fpread)) {
        fscanf(fpread, "%s", filebuffer);
        filebufferlen++;
    }
}


void  writeFile(char* filebuffer, int filebufferlen) {
    for (int i = 0; i < filebufferlen; ++i){
            printf("%c\n", filebuffer[i]);
    }       
}

1 个答案:

答案 0 :(得分:0)

修复编译问题后:

代码不包含任何代码或数据声明,以包含“单词”数组。很自然地,除了最后一个字之外什么都没有,所以它可以打印出来。