Работа с файлами: вывести студентов 1 и 2 курса, у которых рейтинг меньше 3 - C (СИ)

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

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

Ребята, помогите пожалуйста, задания вроде не сложные, но я ничерта не могу понять в работе с файлами. Хоть на примере гляну. 1. Используя ввод-вывод в стиле С создать файл и записать в него структурированные данные, оформить в виде функции. 2. Написать функцию, которая выводит содержимое созданного файла на экран (синтаксис С). 3. Написать функцию, которая позволяет удалить из файла данные (синтаксис С). 4. Написать функцию, которая позволяет добавить в файл данные (синтаксис С). 5. Выполнить поиск в файле согласно варианту. 6. Вывести содержимое измененного файла на экран (синтаксис С). Вот структурированные данные: Условие поиска:Студенты 1 и 2 курса, у которых рейтинг меньше 3
struct student 
{ 
char*name; 
int kurs; 
float rating 
};

Решение задачи: «Работа с файлами: вывести студентов 1 и 2 курса, у которых рейтинг меньше 3»

textual
Листинг программы
#include <stdio.h>
#include <clocale>
#include <Windows.h>
#define LEN 100
 
int isint(char ms[]);
int transfer(int ms);
void vyvedennja(int ms1[],int ms2[],int kst);
 
int main(int argc,char **argv){
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    FILE *fp;
    char buf[LEN];
    char fn[]="test.txt";
    FILE *fbp;
    char fb[]="newbin.txt";
    int n=0,three,dec;
    
    if((fp=fopen(fn,"rt"))==NULL){
        printf("\n\t Файл %s не знайдено\n",fn);
        return 0;
    }
    
    fbp=fopen(fb,"wb");
    printf("Таблиця значень\n");
    printf("#  %-10.16s\t\t\t %-10.16s\n", "Трійкове число", "Десяткове число");
    int b=1;    
    while(fgets(buf,LEN,fp)!=NULL){
        if(isint(buf)!=0){
            dec=isint(buf);
            printf("%d. %-25.25s\t\t %-d\t\n",b++,buf,dec);
            putw(dec,fbp);
            //fwrite(&dec,sizeof(int),1,fbp);
        }
    }
    
    getchar();
    fclose(fp);
    fclose(fbp);
    return 0;
}
 
int isint(char ms[]){
    int i;
    for(i=0;ms[i]!='\0'&&ms[i]!='\n';i++){
        if(isdigit(ms[i])==0)
            return 0;
        if(ms[i]>50)
            return 0;       
    }
    int newint=0,step=3;
    i--;
    newint=ms[i]-48;
    for(i--;i>=0;i--){
        newint=(ms[i]-48)*step+newint;
        step=step*3;
    }
    return newint;
}
 
 
void vyvedennja(int ms1[],int ms2[],int kst){
        
    printf("# \t %-20s\t %-20s\n", "Число в трійковій системі","Число в десятковій системі");
    for(int k=0;k<kst;k++){
        printf("%d. \t %-20d\t\t %-20d\n",k+1,ms1[k],ms2[k]);
    }
    return;
}

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


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

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

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