从文件中读取动态内存

问题描述:

我非常需要一些教授给我的练习。从本质上讲,我使用一个结构和动态内存来编写一个程序,在这个程序中它将读取一个文件,每行有一个单词,并且它将打印到一个新文件中的每个独特单词以及它在文件中的次数。从文件中读取动态内存

因此,举例来说,如果该文件将在有这个

apple 
orange 
orange 

该文件将其打印到会说

apple 1 
orange 2 

到目前为止,这是我的代码

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

struct wordfreq { 
int count; 
char *word; 
}; 

int main(int argc, char *argv[]){ 

int i; 
char *temp; 
FILE *from, *to; 
from = fopen("argc[1]","r"); 
to = fopen("argv[1]","w"); 

struct wordfreq w1[1000]; 
struct wordfreq *w1ptr[1000]; 
for(i = 0; i < 1000; i++) 
    w1ptr[i] = NULL; 
for(i = 0; i < 1000; i++) 
    w1ptr[i] = (struct wordfreq*)malloc(sizeof(struct wordfreq)); 

while(fscanf(from,"%256s",temp)>0){ 

} 

for(i = 999; i >= 0; i--) 
    free(w1ptr[i]); 

} 

w1ptr应该在wordfreq文件中存储文件中的一个单词,然后在该数组中增加count。我不知道如何去将这个单词存储在*单词中。任何帮助将不胜感激

+1

你必须为'字符*临时分配内存;'你在使用它之前'fscanf' –

+0

1 )int main(){' - >'int main(int argc,char * argv []){','from = fopen(“argc [1]”,“r”); to = fopen(“argv [1]”,“w”);' - >'from = fopen(argv [1],“r”); to = fopen(argv [2],“w”);' – BLUEPIXY

+0

@BLUEPIXY他首先必须重新定义man,然后是'main(int argc,char * argv [])' –

这是怎么一般的读/写从文件

const int maxString = 1024; // put this before the main 

    const char * fn = "test.file";   // file name 
    const char * str = "This is a literal C-string.\n"; 

    // create/write the file 
    puts("writing file\n"); 
    FILE * fw = fopen(fn, "w"); 
    for(int i = 0; i < 5; i++) { 
     fputs(str, fw); 
    } 

    fclose(fw); 
    puts("done."); 

    // read the file 
    printf("reading file\n"); 
    char buf[maxString]; 
    FILE * fr = fopen(fn, "r"); 
    while(fgets(buf, maxString, fr)) { 
     fputs(buf, stdout); 
    } 

    fclose(fr); 
    remove(fn); // to delete a file 

    puts("done.\n");