C语言循环出现问题
目前这个程序的目的是:1.第一行的最后一个字符如果是“5”,那么就把下面5行(还有“5”的)这一行,总共六行,复制到另一份txt文件中,但是现在一直在循环不知道为什么?
FILE* fp1 = fopen("C:\\Users\\11251\\Desktop\\新建文件夹\\1.txt", "r");//只读
FILE* fp2 = fopen("C:\\Users\\11251\\Desktop\\新建文件夹\\2.txt", "w");//只写
if (NULL == fp1)
{
printf("open file COM4_2023-01-09_17.33.45.obs");
}
if (NULL == fp2)
{
printf("open file 321.txt");
}
//一般的判断文件打开状态
rewind(fp1); //指针指向文件开头
int i;
char ch,ch1;
char buf1[1024];
int x1 = 0;
int x2 = 0;
while (!feof(fp1))
{
for (i = 0; i < 35; i++)
{
ch = fgetc(fp1);
}
ch1 = ch;
printf("%c\n", ch1); //输出行数
x1 = -(ftell(fp1)-x2);//文件指针的偏移量
fseek(fp1, x1, SEEK_CUR);
while (ch1 =='5')
{
for (i = 0; i < 6; i++)
{
fgets(buf1, sizeof(buf1), fp1);
fputs(buf1, fp2);
}
x2 = ftell(fp1);
printf("%d\n", x2);
}
}
fclose(fp1);
fclose(fp2);
fp1 = NULL;
fp2 = NULL;
return 0;
原始数据的模板是这样的:S SHSH S C 234 123 44 332303 44 5
102 74744747 99999 838383 838383 91 838383 32232
102 747442 99999 838383 44838383 7818838383 2232 23.000
277 199242 99999 838383 838383 19924838383 2232 2232 2232
236 199244 8099999 838383 41838383 1992838383 6 2232 22 222
d93 2222 222233
S SHSH S C 234 123 44 332303 44 5
102 74744747 99999 838383 838383 91 838383 32232
102 747442 99999 838383 44838383 7818838383 2232 23.000
277 199242 99999 838383 838383 19924838383 2232 2232 2232
236 199244 8099999 838383 41838383 1992838383 6 2232 22 222
d93 2222 222233
S SHSH S C 234 123 44 332303 44 5
102 74744747 99999 838383 838383 91 838383 32232
102 747442 99999 838383 44838383 7818838383 2232 23.000
277 199242 99999 838383 838383 19924838383 2232 2232 2232
236 199244 8099999 838383 41838383 1992838383 6 2232 22 222
d93 2222 222233