⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pad.c

📁 Pad a file to desire file size under Linux
💻 C
字号:
#include <stdio.h>#include <stdlib.h>#include <unistd.h>int main(int argc, char *argv[]){	FILE *infp, *outfp;	int target_size, input_size;	int unit, i;	char buffer[512];	unsigned char fill_char;	if(argc!=5)	{		printf("Argument number invalid\n");		printf("pad <size> <input file> <output file> <fill char>\n");		exit(1);	}		fill_char=strtoul(argv[4], 0, 0);	i=strlen(argv[1]);	unit=argv[1][i-1];	switch(unit)	{		case 'g':		case 'G':			argv[1][i-1]=0;			target_size=(int)(atof(argv[1])*1024*1024*1024);			break;		case 'M':		case 'm':			argv[1][i-1]=0;			target_size=(int)(atof(argv[1])*1024*1024);			break;		case 'k':		case 'K':			argv[1][i-1]=0;			target_size=(int)(atof(argv[1])*1024);			break;		case '0'...'9':			target_size=(int)(atof(argv[1]));			break;		default:			printf("Unknown size input\n");			exit(1);	}	infp=fopen(argv[2], "rb");	outfp=fopen(argv[3], "wb");	if(!infp || !outfp)	{		printf("Open file error\n");		exit(1);	}	input_size=0;	while(!feof(infp))	{		i=fread(buffer, 1, 512, infp);		if(i<0)		{			printf("Error in reading input file: err %d\n", i);			exit(1);		}		if(i==0)			continue;		i=fwrite(buffer, 1, i, outfp);		if(i<=0)		{			printf("Error in writing output file\n");			exit(1);		}		input_size+=i;	}	i=target_size-input_size;	printf("Target input size in byte : %10d(0x%08x)\n", input_size, input_size);		printf("Target output size in byte: %10d(0x%08x)\n", target_size, target_size);		printf("Filling %-5d(0x%08x) bytes with hex 0x%02x\n", i, i,fill_char);	if(i>4)	{		int k;		unsigned char *marker;		for(k=0;k<(i-4);k++)			fputc(fill_char, outfp);		marker=(unsigned char *)&input_size;		fputc(marker[0], outfp);		fputc(marker[1], outfp);		fputc(marker[2], outfp);		fputc(marker[3], outfp);	}	else if(i>0)	{		printf("Not enough space to insert size marker at bottom\n");		goto err;	}	else	{		printf("Target size smaller than the input file size\n");		goto err;	}	fclose(infp);	fclose(outfp);	return 0;	err:	fclose(infp);	fclose(outfp);//	unlink(argv[3]);	exit(1);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -