#include<stdio.h>
#include<unistd.h>
#include<string.h>
#include<malloc.h>
int main()
{
FILE *fp;
char buf[1024];
char data[9][9];
int len,i,n,m;
char *str="fsafdjdf@124.000 fasf@43.00 df\n";
char *str1="fsafdjsdffdf@223.000 fadsfassf@33.00 df\n";
/*FILE * fopen(const char * path,const char * mode);
*参数path字符串包含欲打开的文件路径及文件名,参数mode字符串则代表着流形态。
*r 以只读方式打开文件,该文件必须存在。
*r+ 以可读写方式打开文件,该文件必须存在。
*rb+ 读写打开一个二进制文件,允许读写数据。
*rw+ 读写打开一个文本文件,允许读和写。
*w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。
*w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
*a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容被保留。
*a+ 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的>内容会被保留。
*wb 只写打开或新建一个二进制文件;只允许写数据。
*wb+ 读写打开或建立一个二进制文件,允许读和写。
*ab+ 读写打开一个二进制文件,允许读或在文件末追加数据。
*
*/
fp = fopen("data.dat","w+");
/*size_t fwrite(const void* buffer, size_t size, size_t count, FILE* stream);
*返回值:返回实际写入的数据块数目
*buffer:是一个指针,对fwrite来说,是要获取数据的地址;
*size:要写入内容的单字节数;
*count:要进行写入size字节的数据项的个数;
*stream:目标文件指针;
*/
fwrite(str,strlen(str),1,fp);
fwrite(str1,strlen(str1),1,fp);
/*
*int fseek(FILE *stream, long offset, int fromwhere);
*返回值:成功,返回0,失败返回-1,并设置errno的值,可以用perror()函数输出错误。
*偏移起始位置:文件头0(SEEK_SET),当前位置1(SEEK_CUR),文件尾2(SEEK_END))为基准,偏移offset(指针偏移量)
*/
fseek(fp,0,SEEK_SET);
n=m=0;
/*:char *fgets(char *buf, int bufsize, FILE *stream);
**buf: 字符型指针,指向用来存储所得数据的地址。
*bufsize: 整型数据,指明buf指向的字符数组的大小。
**stream: 文件结构体指针,将要读取的文件流。
*返回值:失败或读到文件结尾返回NULL
*/
while(fgets(buf,1024,fp) != NULL)
{
len = strlen(buf);
buf[len-1] = '\0';
printf("%s\n",buf);
for(i = 0; i < len ;i++)
{
if(buf[i] == '@')
{
i++;
while(buf[i] != ' ')
data[n][m++] = buf[i++];
data[n][m] = '\0';
printf("%s\n",&data[n][0]);
n++;m=0;
}
}
}
fclose(fp);
return 0;
}
linux小程序
最新推荐文章于 2023-04-18 10:25:25 发布