/* 该程序用于去除代码前的序号,如在网上复制的代码每行都有序号时,序号范围适用于 1~999 */
#include <stdio.h>
void main()
{
char dir1[40] = {0}, dir2[40] = {0},ch[3] = {0};
FILE *fR = NULL,*fW = NULL;
printf("源路径:");
gets(dir1);
fR = fopen(dir1, "r+");
printf("输出路径:");
gets(dir2);
fW = fopen(dir2, "w+");
while ((ch[0] = fgetc(fR))!=EOF)
{
if (ch[0]>='0' && ch[0]<='9' || ch[0]==' ')
{
ch[1] =fgetc(fR);
if (ch[1]>='0' && ch[1]<='9' || ch[1]==' ')
{
ch[2] = fgetc(fR);
if (ch[2]>='0' && ch[2]<='9')
{
ch[3] =fgetc(fR);
fputc(ch[3], fW);
}
else
{
for (int i=0; i<3; i++)
fputc(ch[i], fW);
}
}
else
{
for (int i=0; i<2; i++)
fputc(ch[i], fW);
}
}
else
{
fputc(ch[0], fW);
}
}
fclose(fR);
fclose(fW);
}
方法二:
#include <stdio.h>
void main()
{
char dir1[40] = {0}, dir2[40] = {0},ch='\0';
FILE *fR = NULL,*fW = NULL;
printf("源路径:");
gets(dir1);
fR = fopen(dir1, "r+");
printf("输出路径:");
gets(dir2);
fW = fopen(dir2, "w+");
while (ch!=EOF)
{
ch = fgetc(fR);
if (ch==' ' || ch>='0' && ch<='9')
{
ch = fgetc(fR);
if (ch==' ' || ch>='0' && ch<='9')
{
ch = fgetc(fR);
if (ch<='9' && ch>='0')
{
ch = fgetc(fR);
fputc(ch, fW);
}
else
{
if (ch=='\n') //当遇见 0D 0A 时读取的是 0A ,所以要多返回一个,下同
fseek(fR, -4, SEEK_CUR);
else
fseek(fR, -3, SEEK_CUR);
for (int i=0; i<3; i++)
{
ch = fgetc(fR);
fputc(ch, fW);
}
}
}
else
{
if (ch=='\n')
fseek(fR, -3, SEEK_CUR);
else
fseek(fR, -2, SEEK_CUR);
for (int i=0; i<2; i++)
{
ch = fgetc(fR);
fputc(ch, fW);
}
}
}
else
{
if (ch!=EOF)
fputc(ch, fW);
}
}
fclose(fR);
fclose(fW);
}