2010-12-04 3 views
0

pouvez-vous m'aider avec mon code? Je veux faire un programme qui déterminera si l'identifiant d'étudiant a déjà été utilisé, je peux les comparer une fois ... mais ce que je veux faire est d'avoir une comparaison chaque fois que l'utilisateur saisit un autre identifiant d'étudiant ainsi ... le programme saura si l'utilisateur saisit un autre identifiant utilisé, je sais que je dois avoir une boucle avant le "Entrez l'identifiant de l'étudiant:" .. mais ayant encore du mal à penser aux conditions, ou si vous avez une meilleure solution ... Je serais heureux de l'utiliser .. gars ceci est mon code:comparer les objectifs à l'entrée de l'utilisateur

#include<stdio.h> 
#include<stdlib.h> 
struct studentinfo{ 
     char id[8]; 
     char name[30]; 
     char course[5]; 
}s1; 
main(){ 
    int i=0; 
    int count=0; 
    char arr[50]; 
    FILE *stream = NULL; 
    stream = fopen("studentinfo.txt", "a+");  
    struct studentinfo *array[50]; 

    array[i] = (struct studentinfo*) malloc(sizeof(struct studentinfo)); 

      printf("Enter Student ID: "); 
      scanf("%s", array[i]->id); 
      fflush(stdin); 
      while(!feof(stream)){ 
      fgets(arr, 6, stream); 
      if(strcmp(arr, array[i]->id)==0){ 
      printf("Student ID is used!\n"); 
      free(array[i]); 
      } 
     } 
      printf("Enter Student Name: "); 
      gets(array[i]->name); 
      fflush(stdin); 
      printf("Enter Student Course: "); 
      scanf("%s", array[i]->course); 

      fprintf(stream, "\n%s,\t%s,\t%s", array[i]->id, array[i]->name, array[i]->course); 
      i++; 

     fclose(stream); 
     i=0;//for freeing the space 
     if(array[i] != NULL){ 
     free(array[i]); 
     } 
    getch(); 
} 

Répondre

0

j'avais des conseils pour utiliser la fonction goto ... et résoudre le problème, mais j'étais un peu inquiet car il pourrait y avoir un paradis i bug Je n'ai pas encore rencontré, c'est mon nouveau code:

#include<stdio.h> 
#include<stdlib.h> 
struct studentinfo{ 
     char id[8]; 
     char name[30]; 
     char course[5]; 
}s1; 
main(){ 
    int i=0; 
    int count=0; 
    char arr[50]; 
    FILE *stream = NULL; 
    stream = fopen("studentinfo.txt", "a+");  
    struct studentinfo *array[50]; 

    array[i] = (struct studentinfo*) malloc(sizeof(struct studentinfo)); 
      studid: 
      printf("Enter Student ID: "); 
      scanf("%s", array[i]->id); 
      fflush(stdin); 
      while(!feof(stream)){ 
      fgets(arr, 6, stream); 
      if(strcmp(arr, array[i]->id)==0){ 
      printf("Student ID is used!\n"); 
      goto studid; 
      } 
      } 
      printf("Enter Student Name: "); 
      gets(array[i]->name); 
      fflush(stdin); 
      printf("Enter Student Course: "); 
      scanf("%s", array[i]->course); 

      fprintf(stream, "\n%s,\t%s,\t%s", array[i]->id, array[i]->name, array[i]->course); 
      i++; 

     fclose(stream); 
     if(array[i] != NULL){ 
     free(array[i]); 
     } 
    getch(); 
} 

d'autres meilleures solutions thnx^_^

Questions connexes