文件的打开、关闭:fopen 、fclose
bzero()
fopen()
在vs下有以下模式:
r ( rb) :打开一个文件,读取
a ( ab) :打开一个文件,从尾部写入。只能写,不能读。
w (wb) :创建一个文件,写入(如果文件存在,就会覆盖)
r+ ( rb+) :打开一个文件,可读可写。光标在开头。再写会覆盖后面的内容。
a+ ( ab+) :打开一个文件,可读可写。光标在开头。(自己试一下!!!)
w+ (wb+) :创建一个文件,可读可写。
但是:在linux下,不区分二进制模式还是文本模式,只有以下六种模式:
r b :
a b :
wb :
r b+ :
a b+ :
wb+ :
#include <stdio.h>
#include <stdlib.h>
#include <strings.h> //bzero()的头函数
#include <string.h>
void main(int argc,char* argv[]){
if(argc!=2){
printf("error args\n");
return;
}
FILE* fp;
fp=fopen(argv[1],"ab+"); //打开文件
if(NULL==fp){
perror("fopen");
return;
}
char buf[128];
bzero(buf,sizeof(buf)); // 初始化
int ret;
strcpy(buf,"how are you");
ret=fwrite(buf,sizeof(char),strlen(buf),fp); //从buf向fp写内容,写的单位是 char这么长,写多少个!
if(ret <=0){
perror("fwrite");
}
ret=fseek(fp,-3,SEEK_CUR); //相对于当前位置偏移三个字节
if(ret!=0){
perror("fseek");
}
bzero(buf,sizeof(buf));
ret=fread(buf,sizeof(char),2,fp);
if(ret <=0){
perror("fread1");
}
printf("fread buf=%s\n",buf);
strcpy(buf,"hello");
ret=fwrite(buf,sizeof(char),strlen(buf),fp); //
if(ret <=0){
perror("fwrite1");
}
//printf("buf=%s\n",buf);
}
bzero()
#include <strings.h>
char buf[128];
bzero(buf,sizeof(buf)); //把里面的内容初始化为0.比memset()少写几个参数。
#include <stdio.h>
fopen();
fclose();
fread();
fwrite();
printf();
scanf()
fprintf();
fscanf();
sprintf();
sscanf();
fseek();
在linux下写r和rb是一样的。
fread
fwrite
ab+ 读的时候从头开始读。
写的时候从尾巴开始写。
如果中间发生了偏移,那么也是从最后开始写。
sprintf() //字符串拼接函数。
char a[10]="hello";
char b[10]="world"
char c[128]=
sprintf();
在linux下如何将数字转换成字符串:在linux下没有itoa()这个函数,只有atoi()函数。
char buf[20];
int a=1234;
sprintf(buf,"%d",a);
printf("%s\n",buf); //此时输出的就是1234。把1234 传到了buffer 而buffer为char *
sscanf() //从一个字符串中往外读。
查看程序执行的返回值 echo $?
-1 显示255.
一般正确返回0 。
ctrl +d 结束输入的信号。
ctrl +c 中断当前进程。
linux下没有fflush();需要自己写。
scanf()可以忽略空格和'\n'
chmod();
chmod 就是用接口写的。