所有的do while循环都能改成for循环吗

#include<stdio.h>
#include<stdlib.h>
int main()
{
char a[80];
int b,i;
float c;
gets(a);
scanf("%d%f",&b,&c);
FILE *fp;
if((fp=fopen("f1.txt","w"))==NULL)
{
printf("cannot");
exit(1);
}
fputs(a,fp);
fprintf(fp,"%d",b);
fprintf(fp,"%.2f",c);
char end='\0';
fprintf(fp,"%c",end);
fclose(fp);
if((fp=fopen("f1.txt","r"))==NULL)
{
printf("cannot");
exit(1);
}
char d[100];
int j;
for(j=0;d[j]!='\0';j++)
{
fscanf(fp,"%c",&d[j]);
}
puts(d);
fclose(fp);
return 0;
}
这个代码我只把最后的do while循环改成了for循环,但是就没输出结婚了。

do_while循环至少会执行一次,for循环会判断d[j]!='\0',j=0时,如果d[j]='\0',就不会执行循环体。
调试看下声明的d[0]是多少。
如有帮助,请采纳,谢谢。

do while循环是无条件执行第一次的,而for循环的循环条件是在执行之前判断,所以for括号里的循环条件放到循环中,循环体的最后,这样相当于每次执行完然后再判断是否执行下一次,不符合条件就break掉跳出循环。