试图将一个文件的内容多次复制到c中的另一个文件中



我试图用c写一个程序,将一个文件的内容复制到另一个文件多次,但有些东西是关闭的。出现一些奇怪的字符,并且只复制一次。

c代码
#include <stdlib.h>
#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
char* laod_with_correct_size(char* file_location, int size) {
char* buffer=NULL;
FILE* file;
size=0;
int len;
file=fopen(file_location,"rb");
if(file==NULL) {
fclose(file);
return NULL;
}
fseek(file,0,SEEK_END);
len=ftell(file);
if(len<1) {
fclose(file);
return NULL;
}

rewind(file);
buffer=(char*) malloc(len);
if(buffer==NULL) {
fclose(file);
return NULL;
}
if(fread(buffer,1,len,file)!=(size_t)len) {
free(buffer);
fclose(file);
return NULL;
}
fclose(file);
size=len;
printf("Size in fucntion is %dn",len);    
return buffer;
}
int get_size(char* filepath) {
FILE* f;
int len;
f=fopen(filepath,"rb");
fseek(f,0,SEEK_END);
len=ftell(f);
fclose(f);
printf("TOTAL SIZE THAT SHOULD BE IN THE FUCNTION IS %d",len);
}
int write_correctly(char* file,char* buffer,int len) {
// printf("len size is %dn",len);
int file_descriptor = open(file,O_APPEND || O_CREAT);
int len_to_use=get_size(file);
int size=write(file_descriptor,buffer,len_to_use);
printf("Second size in fucntion is %dn",size);    
close(file_descriptor);
printf("SIZE OF SIZE+1 IS %d and SIZE OF LEN IS %dn",size+1,len);
if(size!=len) {
return-1;
} else {
return size;
}
}

int main(int argc,char** argv) { 
int size=0;
size=get_size(argv[1]);
char* buffer=laod_with_correct_size(argv[1],size);
printf("Size of %s is %dn",argv[1],size);
// if(write_correctly(argv[2],buffer,size)<0) {
//     printf("Couldn't writen");
// }
write_correctly(argv[2],buffer,size);
write_correctly(argv[2],buffer,size);
write_correctly(argv[2],buffer,size);
write_correctly(argv[2],buffer,size);

return 0;
}

要复制的第一个文件

salut
buna
alo

第二个文件(复制到)

salut
buna
alo
000000000QF700000000000000000000

我的指针生锈了,但我希望我没有犯任何大错误。

函数get_size声明返回int类型的值,但从不返回值。

通过在函数mainwrite_correctly中使用这些不存在的返回值,您的程序调用了未定义的行为。

同样,在函数write_correctly中,您试图写入的数据量等于已经存在的输出文件的大小,这是没有意义的。相反,你应该写缓冲区的大小,而应该是输入文件的大小。

如果在调试器中逐行运行程序,同时监视所有变量的值,您可能会发现更容易理解程序中发生的事情。

相关内容

  • 没有找到相关文章

最新更新