看程序:
#include <stdio.h>
#include<string.h>
int main(int argc , char *argv[])
{
FILE *first_stream;
char *msg;
int char_num;
char *str = "this is a test";
first_stream = fopen("D:\liu.fil" , "w+");
char_num = fwrite(str , strlen(str) , 1, first_stream);
printf("%d \n" , char_num);
fseek(first_stream , 0 , SEEK_SET);
msg = malloc(sizeof(strlen(str)));
fgets(msg , strlen(str)+1 , first_stream);
printf("%s \n" , msg);
fclose(first_stream);
return 0;
}
这里fopen函数要注意后面的w+参数是表示可以读写,另外,fwrite(str , strlen(str) , 1 ,first_stream) , 这里给是指给str分配strlen(str)*1个空间,好让str写入first_stream里面去。这个函数的返回值是1,也就是fwrite函数的第三个参数的实参。
fgets(msg , strlen(str)+1 ,first_stream)是从first_stream里面取得strlen(str)+1个空间,并把它们复制到msg指针里面。
不知道以上说的是否正确,如果不正确可以一起探讨。
#include <stdio.h>
#include<string.h>
int main(int argc , char *argv[])
{
FILE *first_stream;
char *msg;
int char_num , size_char;
char *str = "this is a test";
size_char = sizeof(char);
printf("%d \n" , size_char);
first_stream = fopen("D:\liu.fil" , "w+");
char_num = fwrite(str ,size_char, strlen(str) , first_stream);
printf("%d \n" , char_num);
fseek(first_stream , 0 , SEEK_SET);
msg = malloc(sizeof(strlen(str)));
fgets(msg , strlen(str)+1 , first_stream);
printf("%s \n" , msg);
fclose(first_stream);
return 0;
}
fwrite第二个参数指要写入的每个元素的字节大小,第三个是指写入元素的个数。另外,fseek,第二个参数是相对文件开始的偏移,文件的打开有三种方式,一种是SEEK_SET,表示从前面开始打开,另外一种是SEEK_CUR,表示从当前位置开始打开,SEEK_END是从最末尾打开。
#include <stdio.h>
#include<string.h>
int main(int argc , char *argv[])
{
FILE *file;
char *text_path;
text_path = malloc(sizeof(40));
strcpy(text_path , "D:\hao.txt");
file = fopen(text_path , "wb");
free(text_path);
fputs("this is big message" , file);
fseek(file , 9 , SEEK_SET);
fclose(file);
return 0;
}
以下是另外一个写法:
#include <stdio.h>
#include<string.h>
int main(int argc , char *argv[])
{
FILE *file;
char *text_path , *to_write_in;
text_path = malloc(sizeof(40));
to_write_in = "this is big message";
strcpy(text_path , "D:\hao.txt");
file = fopen(text_path , "wb");
free(text_path);
fwrite(to_write_in , sizeof(char) , strlen(to_write_in) , file);
fseek(file , 9 , SEEK_SET);
fclose(file);
return 0;
}