图片复制
#include<stdio.h>
#include<string.h>
int main()
{
FILE *fp1 = fopen("./jkl.jpg", "rb");
FILE *fp2 = fopen("./pp1.jpg", "wb");
if (fp1 == NULL) {
perror("fopen");
return 1;
}
if (fp2 == NULL) {
perror("fopen");
return 2;
}
fseek(fp1, 0, SEEK_END); //将指针对二进制文件的读取位置放到末端
int i=ftell(fp1); //得到起始偏移量,这里也就是文件大小
rewind(fp1); //将指针对二进制文件(库蒂尼奥.jpg)的读取位置恢复到起始位置
char *p = (char*)malloc(i); //申请与原图片相同大小的动态内存空间
fread(p, 1, i, fp1); //复制
fwrite(p, 1, i, fp2); //粘贴
fclose(fp2);
fclose(fp1); //关闭文件
}
打印文件信息
__LINE__ :当前程序行的行号,表示为十进制整型常量
__FILE__ :当前源文件名,表示字符串型常量
__DATE__ :转换的日历日期,表示为Mmm dd yyyy 形式的字符串常量,Mmm是由asctime产生的。
__TIME__ :转换的时间,表示"hh:mm:ss"形式的字符串型常量,是有asctime产生的。
#include<stdio.h>
int add(int a,int b)
{
return a+b;
}
int sub(int a,int b)
{
return a-b;
}
int mul(int a,int b)
{
return a*b;
}
int div(int a,int b)
{
return a/b;
}
int adv(int a,int b)
{
return a%b;
}
int main()
{
int a= 10;
int b = 20;
FILE *fp = fopen("./20220921.txt","w+");
if(fp == NULL)
{
printf("open failed\n");
}
int ret1 = add(a,b);
fprintf(fp,"line:%d %d\n",__LINE__,ret1);
#include<stdio.h>
int add(int a,int b)
{
return a+b;
}
int sub(int a,int b)
{
return a-b;
}
int mul(int a,int b)
{
return a*b;
}
int div(int a,int b)
{
return a/b;
}
int adv(int a,int b)
{
return a%b;
}
int main()
{
int a= 10;
int b = 20;
FILE *fp = fopen("./20220921.log","w+");
if(fp == NULL)
{
printf("open failed\n");
}
int ret1 = add(a,b);
fprintf(fp,"line:%d %d\n",__LINE__,ret1);
int ret2 = sub(a,b);
fprintf(fp,"file:%s %d\n",__FILE__,ret2);
int ret3 = mul(a,b);
fprintf(fp,"date:%s %d\n",__DATE__,ret3);
int ret4 = div(a,b);
fprintf(fp,"time:%s %d\n",__TIME__,ret4);
int ret5 = adv(a,b);
fprintf(fp,"file:line:date:time:%d\n",__FILE__,__LINE__,__DATE__,__TIME__,ret5);
return 0;
}
int ret2 = sub(a,b);
fprintf(fp,"file:%s %d\n",__FILE__,ret2);
int ret3 = mul(a,b);
fprintf(fp,"date:%s %d\n",__DATE__,ret3);
int ret4 = div(a,b);
fprintf(fp,"time:%s %d\n",__TIME__,ret4);
int ret5 = adv(a,b);
fprintf(fp,"file:line:date:time:%d\n",__FILE__,__LINE__,__DATE__,__TIME__,ret5);
return 0;
}
输入成绩排序
1.有5个学生, 每个学生有3门课程的成绩,从键盘输人学生数据(包括学号,姓名,3
门课程成绩),计算出平均成绩,将原有数据和计算出的平均分数存放在磁盘文件“stud”中。
2.将第1题“stud”文件中的学生数据,按平均分进行排序处理,将已排序的学生数据
存入一个新文件“stu. sort" 中。
3.将第2题已排序的学生成绩文件进行插人处理。插人一个学生的3门课程成缋,程
序先计算新插人学生的平均成绩,然后将它按成绩高低顺序插人,插人后建立一个新文件。
4.将第3题结果仍存入原有的“stu_ sort"文件而不另建立新文件。
#include<stdio.h>
#include<string.h>
typedef struct stu{
int id;
char name[20];
float y;
float s;
float e;
}SSS;
typedef struct tt{
int id;
char name[20];
float y;
float s;
float e;
float pj;
}ZZZ;
int main(){
printf("输人学生数据\n");
SSS a[5];
int i,j;
for(i=0;i<5;i++){
scanf("%d %s %f %f %f",&a[i].id,a[i].name,&a[i].y,&a[i].s,&a[i].e);
}
float sum[5];
float pjf[5];
for(i=0;i<5;i++){
sum[i] = a[i].y+a[i].s+a[i].e;
}
for(i=0;i<5;i++){
pjf[i] = sum[i]/3;
}
FILE *pa = fopen("./stud.txt","w+");
if(pa==NULL){
printf("sb");
}
for(i=0;i<5;i++){
fprintf(pa,"%d %s %.1f %.1f %.1f 平均分是:%.1f\n",a[i].id,a[i].name,a[i].y,a[i].s,a[i].e,pjf[i]);
}
rewind(pa);
//2.
ZZZ t;
ZZZ b[5];
for(i=0;i<5;i++){
b[i].id = a[i].id;
strcpy(b[i].name,a[i].name);
b[i].y =a[i].y;
b[i].s = a[i].s;
b[i].e = a[i].e;
b[i].pj = pjf[i];
}
for(i=0;i<5-1;i++) { //最差走..
for(j=0;j<5-i-1;j++){ //至少走
if(b[j].pj<b[j+1].pj){ //偌大交换
t = b[j];
b[j]=b[j+1];
b[j+1]=t;
}
}
}
FILE *pb =fopen("./studsort.txt","w+");
if(pb==NULL){
printf("sb");
}
for(i=0;i<5;i++){
fprintf(pb,"%d %s %.1f %.1f %.1f 平均分是:%.1f\n",b[i].id,b[i].name,b[i].y,b[i].s,b[i].e,b[i].pj);
}
fclose(pa);
fclose(pb);
//3.
pb =fopen("./studsort.txt","a+");
if(pa==NULL){
printf("sb");
}
SSS daluo = {9999,"罗真人",100,100,100};
ZZZ dl;
// scanf("%d %s %f %f %f",&daluo.id,daluo.name,&daluo.y,&daluo.s,&daluo.e);
dl.id = daluo.id;
strcpy(dl.name,daluo.name);
dl.y =daluo.y;
dl.s =daluo.s;
dl.e =daluo.e;
dl.pj = (daluo.e+daluo.s+daluo.y)/3;
fprintf(pb,"%d %s %.1f %.1f %.1f 平均分是:%.1f\n",dl.id,dl.name,dl.y,dl.s,dl.e,dl.pj);//写入
ZZZ lo;
ZZZ bb[5+1];
for(i=0;i<5;i++){
bb[i].id = b[i].id;
strcpy(bb[i].name,b[i].name);
bb[i].y =b[i].y;
bb[i].s = b[i].s;
bb[i].e = b[i].e;
bb[i].pj = b[i].pj;
}
bb[5].id = dl.id;
strcpy(bb[i].name,dl.name);
bb[5].y = dl.y;
bb[5].s = dl.s;
bb[5].e = dl.e;
bb[5].pj =dl.pj;
for(i=0;i<6-1;i++) {
for(j=0;j<6-i-1;j++){
if(bb[j].pj<bb[j+1].pj){
lo = bb[j];
bb[j]=bb[j+1];
bb[j+1]=lo;
}
}
} //写值,排序
FILE *pc = fopen("./stu_ sort.txt","w+");
for(i=0;i<6;i++){
fprintf(pc,"%d %s %.1f %.1f %.1f 平均分是:%.1f\n",bb[i].id,bb[i].name,bb[i].y,bb[i].s,bb[i].e,bb[i].pj);
}
fclose(pa);
fclose(pb);
fclose(pc);
//4.
pb =fopen("./studsort.txt","rb+");
for(i=0;i<6;i++){
fprintf(pb,"%d %s %.1f %.1f %.1f 平均分是:%.1f\n",bb[i].id,bb[i].name,bb[i].y,bb[i].s,bb[i].e,bb[i].pj);
}
fclose(pb);
return 0;
}