Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.12.2011, 22:25   #1
bloger
Пользователь
 
Регистрация: 19.11.2009
Сообщений: 12
По умолчанию проблема из считыванием записи структуры из файла

В файле, существуют записи для следуищей структуры. Фамилия, имя, группа, стипендия. Нужно по введенной фамилии изменить стипендию. Обновленную базу записать в другой файл.

Проблема в том, что когда я ввожу фамилию, то находит только первую запись, для остальных срабатывает else puts("Не найдено");. На екран я считываю и вывожу всех студентов без проблем, а вот когда делаю поиск то не находит другие записи. 2) Как сделать чтобы не просто зааписывало, а записывало всех в файл, а не того кого я изменяю как у меня.

Код:
#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<stdlib.h>
#include<io.h>
#define N 10

struct Student{
     char last_name[100];
     char name[100];
     char group[5];
     int stupendia;
   };

int main(){
     setlocale(0,"RUS"); 
     int count = 0;
     char news[100];
     int i;
     
     
     FILE *pf=fopen("Students.txt","r");
     FILE *pf2=fopen("output.txt","w");
         
     if(pf==NULL){
        printf("Файл не найден  !!!\n");
        system("pause");
        exit(0);
     } 

     struct Student database[150];
 
    while(!feof(pf)){
      fscanf(pf,"%s%s%s%d", &database[count].last_name, &database[count].name, 
      &database[count].group, &database[count].stupendia);
    count++;
   }
    
    for(i=0;i<count;i++)
        printf("%s\n%s\n%s\n%d\n\n",database[i].last_name, database[i].name, 
        database[i].group, database[i].stupendia);                 
        printf("Количество студентов:%d\n\n",count);
    
        puts("Введите фамилию для изменения:");
        scanf("%s",&news);
      
      
      while(!feof(pf))
      for(i=0;i<count;i++){
          if(strcmp(database[i].last_name,news) == 0){
               printf("Введите новую стипендию для студента:%s\n",database[i].last_name);
               scanf("%d",&database[i].stupendia);
               fprintf(pf2,"%s\n",database[i].last_name);
               fprintf(pf2,"%s\n",database[i].name);
               fprintf(pf2,"%s\n",database[i].group);
               fprintf(pf2,"%d",database[i].stupendia);
          
          }else
                     puts("Не найдено в БДî");  
               break;
    }
    
    
                 
     getch();
     return 1;
     fclose(pf);
     fclose(pf2);
   
}
bloger вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема считыванием данных из файла(fortran 90) ivan.tiran Помощь студентам 0 03.11.2011 22:46
Проблемы со считыванием игровой карты с файла Enlightened Gamedev - cоздание игр: Unity, OpenGL, DirectX 4 13.01.2011 19:36
как сам лабиринт ввести не как постоянную как тут а считыванием с файла Голем Помощь студентам 10 17.07.2010 18:07
Структуры,Записи в делфи ПРОБЛЕМА mar4elo Общие вопросы Delphi 6 01.12.2008 10:43
DBGrid. Проблема со считыванием инфы из столбца. Teenager БД в Delphi 6 18.01.2008 15:33