wolf225
Зарегистрирован: 04.07.2013 Сообщения: 1
|
Добавлено: Чт Июл 04 2013 22:11 Заголовок сообщения: работа с текстовым файлом в С++ |
|
|
ЗДравствуйте.у меня такая ситуация:есть существующий текстовый файл,в котором данные о студентах(ФИО,номер группы и некоторое количество оценок,которое не определено точно).потом я ввожу фио и если есть совпадения введенных фио с фио в текстовом файле,то с эту строку надо дописать (в конец строки) оценки новые.Помогите пожалуйста реализовать,я запуталась просто((((очень надо.(НУ ТАКЖЕ ЕЩЕ НАДО УДАЛЯТЬ ОЦЕНКИ,ЕСЛИ ВВЕДЕННОЕ ФИО СОВПАЛО)
КОД:
#include "stdafx.h"
#include <windows.h>
#include <stdio.h>
#include <conio.h>
#include <iostream>
#include <string.h>
#include "locale.h"
using namespace std;
void main ()
{
setlocale(LC_ALL, "Russian");
system("cls"); // Очистка экрана
int a, b = 1;
char famil2[30];
char famil[20];
char imya[30];
char imya2[30];
char otchest[30];
char otchest2[30];
int nomer;
int ocenki;
int i, o, p = 1;
int count = 1;
char s[200];
char dob[100];
FILE *t, *nf;
t = fopen("D:\\программирование\\прога\\tenis\\tenis\\student.txt", "r+");//открываю исходный текстовый файл
if(t == NULL)
{
printf("Ошибка при открытии файла.\n");
system ("pause");
exit(1);
}
nf = fopen ("stud.txt", "w+");//создаю новый файл для перезаписи в него строк
printf("Введите фамилию: ");
scanf("%s",famil2);
printf("Введите имя: ");
scanf("%s",imya2);
printf("Введите отчество: ");
scanf("%s",otchest);
int flag = 0;
while(!feof(t))
{
if (fgets(s, 200, t))
{
char temp[100];
int i = 0;
while (sscanf(s + i, "%s", temp))
{
if (!strcmp(famil2, temp) && !strcmp(imya2, temp) && !strcmp(otchest2, temp))
{
printf("Введите оценку: ");
scanf ("%d", &ocenki);
sprintf(dob,"%d |",ocenki);
while(1)//бесконечный цикл для ввода оценок
{
printf("Ввести еще оценку? (1-да, 2-выход) ");
scanf ("%d",&p);
if (p==1)
{
printf ("Введите следующую оценку: ");
scanf ("%d", &ocenki);
sprintf(dob,"%d |",ocenki);
sprintf(dob," ");
}
else break;
}
i += strlen(temp) + 1;
if (i >= strlen(s))
strcat(s,dob);//добавляю в строку из исходного текстового файла оценку,которую выше записала в массив
fputs(s,nf);//записываю в новый текстовый файл получившуюся строку
break;
}
}
if (!flag)
fputs(s,nf);//если нет совпадений
break;
flag = 0;
}
}
fclose (t);
fclose (nf);
system ("pause");
} |
|