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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.01.2016, 13:10   #1
khmel08
Новичок
Джуниор
 
Регистрация: 22.01.2016
Сообщений: 2
По умолчанию (СИ) Вызов пользовательской функции, (неверное указаны парамеры)

Подскажите пожалуйста какие следует указать параметры при обращении к функции RedaktInfo() или, может, в самой функции я формальные параметры неверно указала?
А также в пользовательской функции не удается перезаписать данные в файл через fprintf, подскажите как решить данную проблему, спасибо!
Функция:
Код:
void RedaktInfo(Spisok *pSTUDENT)
{
goto redact;
char StudFaind[20];//студент, данные которого нужно изменить
Stud=fopen("d:\\Stud.txt","a");
printf("Bведите ФИО студента для редактирования:  ");
scanf("%s", StudFaind);
for (int i=0; i<q; i++) {
      fscanf(Stud, "%s %s %f %d" , 
pSTUDENT->FIO, pSTUDENT->number, &pSTUDENT->ball, &pSTUDENT->dohod);
      printf("%s %s %f %d" , 
pSTUDENT->FIO, pSTUDENT->number, pSTUDENT->ball, pSTUDENT->dohod);
      if (strcmp(pSTUDENT->FIO, StudFaind)==0) {
          redact: printf("Какие данные студента %s следует изменить?\n   1-ФИО;\n    2-номер группы;\n    3-средний балл;\n    4-доход на одного члена семьи.\n", StudFaind);
          int e;//для выбора информации, которую следует изменить
          scanf("%d", &e);
          switch (e) {
            case 1: printf("Введите новые данные(ФИО):  ");
                scanf("%s", pSTUDENT->FIO);//или создаать новую структуру X, а потом  присв-ть
                break;
            case 2: printf("Введите новые данные(номер группы):  ");
                scanf("%s", pSTUDENT->number);
                break;
            case 3: printf("Введите новые данные(средний балл):  ");
                scanf("%f", &pSTUDENT->ball);
                break;
            case 4: printf("Введите новые данные(доход на одного члена семьи):  ");
                scanf("%d", &pSTUDENT->dohod);
                break;
            default:
                printf( "Неверный ввод.\n" );
          }
          printf( "\nПродолжить редактирование данных данного студента? 1-да, 2-нет\n " );
          int a;
          scanf( "%d", &a );
          switch ( a ) {
               case 1: goto redact;//продолжаем редактировать данные студента
					break;
				case 2: printf("Данные успешно изменены!");
					goto vixod;
					break;
				default:
					printf( "Неверный ввод.\n" );
		  }
	  }
}
vixod: if (i<q) {
for (i=0; i<q; i++) {//В этом месте перестает работать, как иначе перезаписать данные в файле?
	fprintf(Stud,"%s %s %f %d" , 
		pSTUDENT->FIO, pSTUDENT->number, pSTUDENT->ball, pSTUDENT->dohod);
	}
}
else {
	printf("Студент %s в списке не найден.", StudFaind);
	}
fclose(Stud);
}
Обращение к функции:
Код:
printf( "8.Выход в меню 1-го уровня;\n" );
printf( "Ваш выбор: " );
int c;
scanf( "%d", &c );
switch ( c ) {
    case 1: FileOpen();// 1.Создание/открытие файла с данными;-параметры-
        break;
    case 2: AddInfo();// 2.Добавление записи;
        break;
    case 3: RedaktInfo();// 3.Редактирование записи; ???????????????????
        break;
khmel08 вне форума Ответить с цитированием
Старый 22.01.2016, 13:15   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Цитата:
какие следует указать параметры при обращении к функции RedaktInfo()
Код:
Spisok *pSTUDENT
p51x вне форума Ответить с цитированием
Старый 22.01.2016, 13:46   #3
khmel08
Новичок
Джуниор
 
Регистрация: 22.01.2016
Сообщений: 2
По умолчанию

Извините, с параметрами подсказали ошибку, исправила, подскажите как в пользовательской функции перезаписать данные в файл, через fprintf не получается, перед началом цикла выбрасывает из программы. (переменная q определена как глобальная)
Функция:
Код:
void AdminMenu (struct Spisok *pSTU)
{
char StudFaind[20];//студент, данные которого нужно изменить
struct Spisok STU;
Stud=fopen("d:\\Stud.txt","r+");
q=4;
printf("Bведите ФИО студента для редактирования:  ");
scanf("%s", StudFaind);
for (i=0; i<q; i++) {
      Spisok *pSTU=(Spisok*)malloc(sizeof(Spisok));//выделяем память под список студентов
      fscanf(Stud," %s %s %f %d" , 
          pSTU->FIO, pSTU->number, &pSTU->ball, &pSTU->dohod);
      if (strcmp(pSTU->FIO, StudFaind)==0) {
          redact: printf("Какие данные студента %s следует изменить?\n   1-ФИО;\n    2-номер группы;\n    3-средний балл;\n    4-доход на одного члена семьи.\n", StudFaind);
          int e;//для выбора информации, которую следует изменить
          scanf("%d", &e);
          switch (e) {
            case 1: printf("Введите новые данные(ФИО):  ");     
                scanf("%s", pSTU->FIO);//или созд
                break;
            case 2: printf("Введите новые данные(номер группы):  ");
                scanf("%s", pSTU->number);
                break;
            case 3: printf("Введите новые данные(средний балл):  ");
                scanf("%f", &pSTU->ball);
                break;
            case 4: printf("Введите новые данные(доход на одного члена семьи):  ");
                scanf("%d", &pSTU->dohod);
                break;
            default:
                printf( "Неверный ввод.\n" );
          }
          printf( "\nПродолжить редактирование данных данного студента? 1-да, 2-нет\n " );
          int a;
          scanf( "%d", &a );
          switch ( a ) {
                case 1: goto redact;//продолжаем редактировать данные студента
                    break;
                case 2: printf("Данные успешно изменены!");
                    goto vixod;
                    break;
                default:
                    printf( "Неверный ввод.\n" );
          }
      }
}
vixod: if (i<q) {
for (i=0; i<q; i++) {//В этом месте перестает работать, как иначе перезаписать данные в файл?
    fprintf(Stud,"%s %s %f %d" , 
        pSTU->FIO, pSTU->number, pSTU->ball, pSTU->dohod);
    }
}
else {
    printf("Студент %s в списке не найден.", StudFaind);
    }
fclose(Stud);
}
khmel08 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание пользовательской функции в Excel Аcmrf Microsoft Office Excel 5 29.04.2014 16:09
создание пользовательской функции Devil669 Microsoft Office Excel 1 10.12.2012 23:47
Присоединить справку к пользовательской функции MIKI-59 Microsoft Office Excel 0 20.12.2010 16:46
написание пользовательской функции drNabla Microsoft Office Excel 15 05.11.2010 09:08
Написание пользовательской функции. GoreProgrammist Microsoft Office Excel 9 15.07.2009 15:28