Найти в документе вводимые имя, фамилию и группу - C (СИ)

Узнай цену своей работы

Формулировка задачи:

необходимо что бы программа при нажатии 3 позволяла искать в документе вводимые имя фамилию и группу и затем выводила на экран нашедшее
// 10.09.11.cpp: определяет точку входа для консольного приложения.
//программа берёт введённые данные и записывает их в файл
 
#include "stdafx.h"
#include <string.h>

int _tmain(int argc, _TCHAR* argv[])
{
    char* data[30],c[30],v[20];
    char* fileData;
    char* userData;
    int flag = 0;
FILE * f;
    if((f=fopen("c:\i.txt","w"))== NULL)
{
    printf("error");
    }
    else
        {
            while((!feof(f))&&flag!=1)
            {
                printf("Print your name please:\n "); //вводим имя
                scanf("%s %s %s",&data,&c,&v); //скан имени
                fprintf(f,"\n %s %s %s",data,c,v); // пишем в файл
                printf("Enter 1 to exit \n  key 0 if you have many student\n");
                scanf("\n %d",&flag);
            }
        fclose(f);
    }
            if((f=fopen("c:\i.txt","r"))== NULL)
{
    printf("error");
    }
    else
        {
            while((!feof(f))&&flag!=2)
            {
                fscanf(f,"\n %s %s %s",&data,&c,&v);
                printf("%s %s %s \n", data,c,v);
                scanf("\n %d",&flag);
            }
        fclose(f);
    }
            while((!feof(f))&&flag!=3)
            {
                //read in file to fileData variable
                if((f=fopen("c:\i.txt","r"))== NULL)
                {
                fscanf(fileUser, "%s %s %s" &fileData);
                if(strcmp (fileData,userData)==0)
                {
                    /*while(*str1 && *str2)
                    {
                        if(*str1>str2) return 1;
                        if(*str1<str2) return -1;
                        str1++; str2++;
                    }
                        return 0;
                        */
                }
            }

}
компилятор Visual Studio 2010

Решение задачи: «Найти в документе вводимые имя, фамилию и группу»

textual
Листинг программы
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
 
int main(void) {
   int   test;
   char first_name[32], last_name[32], group[24], data[32];
   FILE* fp = fopen("D:\\students.txt", "r");
   if(! fp)
       exit(1);
   *first_name = *last_name = *group = '\0';
    while(1) {
           printf("enter name:");
           scanf("%s", data);
           test = 0;
           while(fscanf(fp, "%s %s %s", first_name, last_name, group) == 3) {
                 if(! strcmp(first_name, data)) {
                         test = 1;
                         printf("student: %s %s,  group: %s\n\n", first_name, last_name, group);
                         break;
                  }
            }
            rewind(fp);
            if(! test)
                 printf("\t Not found %s-student !\n", data);
      }
      fclose(fp);
     return 0;
}

Объяснение кода листинга программы

  1. Подключение необходимых библиотек для работы с файлами и строками
  2. Объявление переменных:
    • test - для контроля выхода из цикла
    • first_name, last_name, group - для хранения имени, фамилии и группы
    • data - для временного хранения введенных пользователем данных
    • fp - для открытия файла
  3. Установка начальных значений для переменных first_name, last_name, group равными нулю, что означает отсутствие имени, фамилии и группы
  4. Вектор цикла while(1), который будет выполняться до тех пор, пока пользователь не введет команду для его остановки
  5. Вывод сообщения с просьбой ввести имя для поиска
  6. Внутри цикла while(1) выполняется цикл while(fscanf(fp, %s %s %s, first_name, last_name, group) == 3), который будет выполняться до тех пор, пока не будет прочитано три строки (имя, фамилия и группа)
  7. Внутри внутреннего цикла while сравнивается введенное пользователем имя с именем студента в файле. Если имена совпадают, то переменной test присваивается значение 1 и выводится информация о найденном студенте
  8. Если информация о студенте найдена, то файл считывается обратно с помощью функции rewind(fp) для поиска следующего студента
  9. Если информация о студенте не найдена, то выводится сообщение об этом
  10. После выхода из внутреннего цикла while закрывается файл с помощью функции fclose(fp)
  11. Возвращается значение 0, что означает успешное выполнение программы

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3.8 из 5
Похожие ответы