Pb avec gcc et le fonction printf

Sirius -  
dubcek Messages postés 19025 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,
je suis en train de coder un exercice à rendre, mais j'ai un léger souci avec mon compilateur (je suppose que ca vient de la hein, mais je ne suis sur de rien) je vous donne mon code actuel.

// Application : TD13 exo3
// Auteur : DARA Mehdy && DURAND Romain
// Nom du fichier : main.c
// Description : montre l'utilisation des fonctions de chargement et savegarde
// Historique des révisions : 

//Directives d'inclusion
#include <stdio.h>
#include <stdlib.h>

//Directives préprocesseur

typedef struct point
{
	int x;
	int y;
} point;

typedef struct polygone
{
	int nbrElemt;
	point *tab;
} polygone;

int main(void)
{
	// Variables en entré
	int ans = -1, ansMenu1=1,ansMenu11=1,taillePoly=0,i,j,coord,quitter=0;
	polygone *poly=NULL;
	char string[100],nomFichier[100],ligne[1000];
	FILE * fichier;
	//Variables en sortie
	//Variables auxiliaires
	while(!quitter)
	{
		while(ans<0 || ans>3)
		{
			printf("\n\tMenu\n");
			printf("1 - Créer un nouveau fichier de polygones\n");
			printf("2 - Charger un fichier de polygones\n");
			printf("3 - Sauvegarder les polygones actuels\n");
			printf("0 - Quitter\n");
		
			printf("\nQue souhaitez vous faire?\n");
			scanf("%d",&ans);
			
		}
	
		switch(ans)
		{
			case 1:
				while(ansMenu1==1 || ansMenu1==0)
				{
					printf("\n1 - Créer un nouveau polygone");
					printf("\n0 - Terminer le fichier\n");
					scanf("%d",&ansMenu1);
					getchar();
				
					switch(ansMenu1)
					{
						case 1:
							printf("\nCombien de points ?\n(0 pour annuler)\n");
							scanf("%d",&ansMenu11);
							getchar();
							if(ansMenu11)
							{
								taillePoly++;
								poly = realloc(poly, taillePoly*sizeof(polygone));
								poly[taillePoly-1].tab=malloc(ansMenu11*sizeof(point));
								poly[taillePoly-1].nbrElemt+=ansMenu11;
								for(i=0; i<ansMenu11; i++)
								{
									printf("\nEntrez le point n°%d\nX?\n",i+1);
									scanf("%d",&coord);
									getchar();
									poly[taillePoly-1].tab[i].x=coord;
									printf("\nY?\n");
									scanf("%d",&coord);
									getchar();
									poly[taillePoly-1].tab[i].y=coord;
								}
							}
						break;
					
						case 0:
							printf("\nDonnez un nom au fichier\n");
							scanf("%s",string);
							getchar();
							fichier=fopen(string,"w");
							for(i=0; i<taillePoly; i++)
							{
								fprintf(fichier,"%d\n",poly[i].nbrElemt);
								for(j=0; j<poly[i].nbrElemt; j++)
								{
									fprintf(fichier,"%d,%d\n",poly[i].tab[j].x,poly[i].tab[j].y);
								}
							}
							fclose(fichier);
							ansMenu1=-1;
						break;
					
						default:
							ansMenu1=1;
						break;
					
					}
				}
			break;
		
			case 2:
				//scanf("%s",nomFichier);
				//getchar();
				fichier=fopen("main.c","r");
				
				
				if (fichier == NULL)
    				printf ("Erreur ...");
				else
			    {
				fgets(ligne,999,fichier);
				printf("salut");
				while(!feof(fichier));
				{
					printf("%s",ligne);
					fgets(ligne,1000,fichier);
				}
				fclose(fichier);
				}
			break;
		
			case 3:
			break;
		
			case 0:
			return 0;
			break;
		}
	}	
	return 0;
}

lors du case 2 du switch(ans), les printf deviennent foireux...
si qqun a une idée de la raison, je lui serais très reconnaissant de me l'indiquer ^^'

merci d'avance :)

ps: le fichier main.c existe et je n'ai aucun souci pour l'ouverture/lecture de son contenu, en gros fopen ne renvoie pas NULL, c'est une certitude.
A voir également:

1 réponse

dubcek Messages postés 19025 Date d'inscription   Statut Contributeur Dernière intervention   5 640
 
hello
while(!feof(fichier)); <---------------- je pense que ce ; est en trop
{
printf("%s",ligne);
fgets(ligne,1000,fichier);
}
0