J'essaye d'ignorer toutes les lignes commençant par un "#" mon code actuel semble fonctionner excepté quand il frappe le quatrième commentaire, il saute alors la première ligne de coordonnées dont j'ai besoin. La façon dont j'ai prouvé cela est avec deux images, une avec une entrée supplémentaire ajoutée après le commentaire et le programme fournit la sortie correcte, et la seconde avec l'entrée correcte mais la sortie incorrecte. (Je dois utiliser l'entrée sans supplément ligne). J'ai également joint la section de code où je rencontre le problème. Merci beaucoup pour votre aide!Dans C fgets et continuer sautent plus d'une ligne
sortie correcte, nouvelle ligne incorrecte ajouté au fichier txt
Code:
a = 0 ;
while(fgets(line, sizeof(line),fp) != NULL)
{
if (line[0] == '#')
{
continue;
}
else if (MAX_X==0 && MAX_Y==0)
{
if ((sscanf(line,"%d %d", &MAX_X, &MAX_Y)==2) && MAX_X>0 && MAX_X <= 1000 && MAX_Y>0 && MAX_Y<=1000){
continue;
}
}else if (NUM_PT==0)
{
if ((sscanf(line, "%d", &NUM_PT)==1)&& NUM_PT>0 && NUM_PT<=1000)
continue;
}
else if((fscanf(fp,"%d %d", &X_COORD[a], &Y_COORD[a]))&& X_COORD[a]>=0 && X_COORD[a]<=MAX_X && Y_COORD[a]>=0 && Y_COORD[a]<= MAX_Y)
{
a++;
continue;
}
else if(strcmp(line, "")==0)
{
return -1;
}
}
Bienvenue dans Stack Overflow! Postez votre code en texte brut, pas une image. Voir https://stackoverflow.com/help/formatting pour l'aide à la mise en forme du code. – Barmar
'fgets()' inclut la nouvelle ligne dans l'entrée. Donc 'strcmp (line," ") == 0' ne sera pas vrai pour une ligne vide, puisque' line' est '" \ n "' – Barmar
Pourquoi utilisez-vous 'fscanf()' au lieu de 'sscanf() 'dans le troisième' sinon if'? – Barmar