思维daotu
#include
#include
#include
int main(int argc, const char *argv[])
{
//定义两个文件
FILE * fpr=NULL;
FILE * fpw=NULL;
//判断文件是否正常打开
if((fpr=fopen(argv[1],"r"))==NULL)
{
perror("fopen error r");
return -1;
}
if((fpw=fopen(argv[2],"w"))==NULL)
{
perror("fopen error w");
return -1;
}
//定义一个用于中间数组
char tbuf[5]="";
//判断文件是否读取到末尾并进行拷贝
while(!feof(fpr))
{
fread(tbuf,1,sizeof(tbuf),fpr);
fwrite(tbuf,1,sizeof(tbuf),fpw);
}
//关闭文件
fclose(fpr);
fclose(fpw);
return 0;
}
#include
#include
#include
//定义注册函数
int do_register()
{
//以追加形式打开文件
FILE * wfp=NULL;
char username_reg[20];
char pwd_reg[20];
//将注册账号和注册密码写入到文件中,中间有空格隔开,每组用换行隔开
printf("请输入注册账号:");
fgets(username_reg,sizeof(username_reg),stdin);
printf("请输入注册密码:");
fgets(pwd_reg,sizeof(pwd_reg),stdin);
//讲两个字符串中的换行改成'\0'
username_reg[strlen(username_reg)-1]='\0';
pwd_reg[strlen(pwd_reg)-1]='\0';
//打开文件
if((wfp=fopen("./user.txt","a+"))==NULL)
{
perror("fopen error");
return -1;
}
//将注册账号和注册密码写入到文件中,中间有空格隔开,每组用换行隔开
fprintf(wfp,"%s %s\n",username_reg,pwd_reg);
fclose(wfp);
printf("注册成功!!\n");
return 0;
}
int do_login()
{
char username_log[20]; //定义数组储存登录用户名及密码
char pwd_log[20];
char username[20];
char pwd[20];
printf("请输入登录账号:");
fgets(username_log,sizeof(username_log),stdin);
printf("请输入登录密码:");
fgets(pwd_log,sizeof(pwd_log),stdin);
username_log[strlen(username_log)-1]='\0'; //在字符串最后加上'\0'
pwd_log[strlen(pwd_log)-1]='\0';
FILE * rfp=NULL;
if((rfp=fopen("./user.txt","r"))==NULL)
{
perror("fopen error");
return -1;
}
while(1) //循环匹配用户名与密码
{
int res=fscanf(rfp,"%s %s",username,pwd);
if(res<0)
{
printf("登录失败\n");
fclose(rfp);
return 1;
}
if(strcmp(username_log,username)==0 && strcmp(pwd_log,pwd)==0)
{
printf("登录成功\n");
fclose(rfp);
return 0;
}
}
}
int main(int argc, const char *argv[])
{
//定义菜单编号
char menu;
while(1)
{
printf("\t\t=====1,注册=====\n");
printf("\t\t=====2,登录=====\n");
printf("\t\t=====0,退出=====\n");
printf("please enter: ");
scanf("%c",&menu);
while(getchar()!='\n');
switch(menu) //菜单选择逻辑
{
case '1':
{
do_register();
}
break;
case '2':
{
do_login();
}
break;
case '0':
exit(EXIT_SUCCESS); //退出菜单程序
default:printf("enter error!!\n");
}
printf("press any key to clear"); //任意键清屏
while(getchar()!='\n');
system("clear");
}
return 0;
}
修改图片
#include
#include
#include
int main(int argc, const char *argv[])
{
FILE * fp=NULL;
if((fp=fopen("shield.bmp","r+"))==NULL)
{
perror("fp open");
return -1;
}
fseek(fp,2,SEEK_SET); //向后偏移两个字节得到文件大小
unsigned int size;
fread(&size,sizeof(size),1,fp); //读取一个整形数据
printf("size=%d\n",size);
unsigned char color[3]={255,0,0}; //蓝色
fseek(fp,54,SEEK_SET); //偏移光标
for (int i=0; i<200; i++)
{
for(int j=0;j<200;j++)
{
fwrite(color,sizeof(color),1,fp);
}
}
return 0;
}