1

Тема: Підскажіть як вийти з циклу

Підкажіть чому не можливо вийти з циклу при введені значення av=0?

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define SIZE 256
main()
{
int rv;
char av[SIZE],mp[SIZE],vd[SIZE];
FILE *fp;
if ((fp=fopen("B","w")) ==NULL)
{
printf("FILE NO OPEN\n");
exit(1);
}
while(1)
{
*av='\0';
printf("AVTOR>");
scanf("%s",&av);
if (av==0) break;
printf("VIDAVNICTVO>");
scanf("%s",vd);
printf("RIK VIDANNYA>");
scanf("%d",&rv);
printf("MOVA PROGR>");
scanf("%s",mp);
fprintf(fp,"%s\n%s\n%d\n%s\n",av,vd,rv,mp);
}
fclose(fp);
fp=fopen("B","r");
while(!feof(fp))
{
*av='\0';
fscanf(fp,"%s%s%d%s",&av,&vd,rv,&mp);
printf("             %s           %s           %d            %s\n",av,vd,rv,mp);
}
rewind(fp);
printf("Do stancii kiev:\n");
while(!feof(fp))
{
*av='\0';
fscanf(fp,"%s%s%d%s",&av,&vd,&rv,&mp);
if (rv>=1990 )
printf("              %s           %s           %d            %s\n",av,vd,rv,mp);
}
}
 

Re: Підскажіть як вийти з циклу

Може тому, що ви зчитуєте строку, а прирівнюєте до числа ?

scanf("%s",vd);

Тут ви зчитуєте як строку

if (av==0)

А тут порівнюєте строку та число.

3

Re: Підскажіть як вийти з циклу

if (av==0) break;
if (!(*av)) break;