Найти в документе вводимые имя, фамилию и группу - 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; }
Объяснение кода листинга программы
- Подключение необходимых библиотек для работы с файлами и строками
- Объявление переменных:
test
- для контроля выхода из циклаfirst_name
,last_name
,group
- для хранения имени, фамилии и группыdata
- для временного хранения введенных пользователем данныхfp
- для открытия файла
- Установка начальных значений для переменных
first_name
,last_name
,group
равными нулю, что означает отсутствие имени, фамилии и группы - Вектор цикла while(1), который будет выполняться до тех пор, пока пользователь не введет команду для его остановки
- Вывод сообщения с просьбой ввести имя для поиска
- Внутри цикла while(1) выполняется цикл while(fscanf(fp,
%s %s %s
, first_name, last_name, group) == 3), который будет выполняться до тех пор, пока не будет прочитано три строки (имя, фамилия и группа) - Внутри внутреннего цикла while сравнивается введенное пользователем имя с именем студента в файле. Если имена совпадают, то переменной
test
присваивается значение 1 и выводится информация о найденном студенте - Если информация о студенте найдена, то файл считывается обратно с помощью функции rewind(fp) для поиска следующего студента
- Если информация о студенте не найдена, то выводится сообщение об этом
- После выхода из внутреннего цикла while закрывается файл с помощью функции fclose(fp)
- Возвращается значение 0, что означает успешное выполнение программы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д