第一题: 在终端的界面上输出:__-__-__-__
1秒过后,变成 1_-__-__-__
再1秒过后,变成 12-__-__-__
依此类推 经过8秒,最终变成 12-34-56-78
\b 是printf里面,光标向左移动的转义符
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <pthread.h>
#include <semaphore.h>
#include <wait.h>
#include <signal.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <sys/socket.h>
#include <sys/ipc.h>
#include <sys/sem.h>
#include <semaphore.h>
#include <sys/msg.h>
#include <sys/shm.h>
#include <sys/un.h>
typedef struct sockaddr_in addr_in_t;
typedef struct sockaddr addr_t;
typedef struct sockaddr_un addr_un_t;
int main(int argc, const char *argv[])
{
printf("__-__-__-__");
fflush(stdout);
printf("\b\b\b\b\b\b\b\b\b\b\b");
fflush(stdout);
sleep(1);
printf("1");
fflush(stdout);
sleep(1);
printf("2-");
fflush(stdout);
sleep(1);
printf("3");
fflush(stdout);
sleep(1);
printf("4-");
fflush(stdout);
sleep(1);
printf("5");
fflush(stdout);
sleep(1);
printf("6-");
fflush(stdout);
sleep(1);
printf("7");
fflush(stdout);
sleep(1);
printf("8");
fflush(stdout);
printf("\n");
return 0;
}
第二题: 将一张bmp图片的大小更改成原来的4倍,宽度和高度都要对应的变成原来的2倍,多出来的像素点用黑色填充
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <pthread.h>
#include <semaphore.h>
#include <wait.h>
#include <signal.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <sys/socket.h>
#include <sys/ipc.h>
#include <sys/sem.h>
#include <semaphore.h>
#include <sys/msg.h>
#include <sys/shm.h>
#include <sys/un.h>
typedef struct sockaddr_in addr_in_t;
typedef struct sockaddr addr_t;
typedef struct sockaddr_un addr_un_t;
int main(int argc, const char *argv[])
{
FILE* fp=fopen("./freedom.bmp","r+");
int size=0;
fseek(fp,2,SEEK_SET);
fread(&size,4,1,fp);
printf("%d\n",size);
size *= 4;
fseek(fp,2,SEEK_SET);
fwrite(&size,4,1,fp);
fseek(fp,2,SEEK_SET);
fread(&size,4,1,fp);
printf("%d\n",size);
int width=0,height=0;
fseek(fp,18,SEEK_SET);
fread(&width,4,1,fp);
fread(&height,4,1,fp);
printf("%d\n",width);
printf("%d\n",height);
width *= 2;
height*= 2;
fseek(fp,18,SEEK_SET);
fwrite(&width,4,1,fp);
fwrite(&height,4,1,fp);
printf("%d\n",width);
printf("%d\n",height);
int pic_count=width * height /4;
fseek(fp,54+pic_count,SEEK_SET);
unsigned char bgr[3]={0,0,0};
fwrite(bgr,3,1,fp);
fclose(fp);
return 0;
}