在C中编写,读取和拆分文件

时间:2014-08-28 16:44:23

标签: c io file-management

我在C编程方面真的很新,所以我需要读一个大文件,将每个点分开,并在新文件中写入分割时得到的内容,所以我必须写几个文件,问题出在我正在命名新文件。 我已经在这个项目中工作了一个星期,我无法解决这个问题。 这是我到目前为止的代码

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

char *myRead(char file_name[]){
    char *output;
    long size;
    FILE *myfile = fopen(file_name,"rb"); 

    fseek(myfile, 0, SEEK_END);
    size = ftell(myfile); 
    rewind(myfile);

    output = (char*) malloc(sizeof(char) * size);
    fread(output,1,size,myfile);
    fclose(myfile);

    return output;
}

void myWrite(char content[], int i){
    FILE *myfile;
    myfile = fopen(i,"w");
    fprintf(myfile,"%s",content);
    fclose(myfile); 
}

void split(char *content){
 int word_length = strlen(content);

    int i = 0;

    char *output = strtok (content,".");
    while (output != NULL){

        myWrite(output,i);
        printf("%s\n", output);
        output = strtok (NULL, ".");
        i++;
    }
}

int main(){
    char file_name[] = "hourglass.txt";
    char *content = myRead(file_name);
    split(content);
    return 0;
}

我想知道的是,我怎么能只用一个名字的数字来做几个文件? (英语不是我的主要语言,请不要粗鲁)

2 个答案:

答案 0 :(得分:2)

更改

myfile = fopen(i,"w");

char file_name[100];
sprintf(filename, "%d", i);
myfile = fopen(file_name, "w");

那应该为你解决

答案 1 :(得分:0)

C的fopen有签名:

FILE* fopen(const char *filename, const char *mode)

当你在i中使用myWrite进行呼叫时,你告诉它一个字符串位于该地址,可能存在垃圾。如果这不是家庭作业的解释,我可以详细说明,但如果是,我只会指出你itoa