Чтение из файла слова (неправильный размер) - C (СИ)

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

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

При чтении фрагмента в переменную я указываю [10] и получается, что из строки Иванов Иван Иванович МГУ 250145 Иванов Ив записывается в первую переменную, ан Иванови во вторую, ну и остальное делится уже А как сделать, чтобы в переменную записывалось полностью слово без лишнего? С учетом того, что в каждой следующей строке уже будут другие данные и другая размерность
#include<stdio.h>
#include<locale.h>
#include <stdlib.h> 
#include <conio.h>
#include < string.h > 
#define size 100
typedef struct
{
    char famly[20];
    char name[20];
    char sname[20];
    char univer[20];
    char group[20];
} Student;
int main()
{
    setlocale(LC_ALL, "Russian");
int i = 0;
    Student stud[size];
    FILE *fp = fopen("C:\\Users\\Ekaterina\\Desktop\\fin.txt", "r");
    if (NULL == fp)
    {
        printf("Не удалось открыть файл!");
        return 0;
    }
    while (!feof(fp))
    {
        //for (i = 0; feof(fp); i++)
        {
            
            fgets(stud[i].famly, 10, fp);
            printf("%s", stud[i].famly);
            fgets(stud[i].name, 10, fp);
            printf("%s", stud[i].name);
            fgets(stud[i].sname, 10, fp);
            printf("%s", stud[i].sname);
            fgets(stud[i].univer, 10, fp);
            printf("%s", stud[i].univer);
            fgets(stud[i].group, 10, fp);
            printf("%s", stud[i].group);
}
    }
        fclose(fp);
    return 0;
}
При чтении из файла все параметры считываются правильно кроме номера группы, непонятные числа появляются ???!!!
#include "stdafx.h"
#include <stdio.h>
#include <conio.h>
#include <locale.h>
#include <stdlib.h>
#include <string.h>
 
#define size 100
 
typedef struct
{
    char famly[20];
    char fName[20];
    char sName[20];
 
    char univer[20];
 
    int group;
} Student;
int main(int argc, char *argv[])
{
    setlocale(LC_ALL, "Russian");
    int group;
    char *univer="";
    Student stud[7];
    
    FILE *fp = fopen("C:\\Users\\Ekaterina\\Desktop\\fin.txt", "r");
    for (int i = 0; !feof(fp); i++)
    {
        fscanf(fp, "%s %s %s %s %d", stud[i].famly, stud[i].fName, stud[i].sName, stud[i].univer, &stud[i].group);
        printf("%s %s %s %s %d\n", stud[i].famly, stud[i].fName, stud[i].sName, stud[i].univer, &stud[i].group);
    }
 
    printf("Введите университет - ");
    scanf("%s", &univer);
    printf("Введите номер группы - ");
    scanf("%d", &group);
    //printf("%s %s %s %s %d\n", stud[i].famly, stud[i].fName, stud[i].sName, stud[i].univer, &stud[i].group);
    FILE *fo = fopen("C:\\Users\\Ekaterina\\Desktop\\fo.txt", "w+");
    for (int i = 0; i<7; i++)
        if ((stud[i].group == group) && (strcmp(stud[i].univer, univer) == 0))
        {
            printf("%s %s %s %s %d\n", stud[i].famly, stud[i].fName, stud[i].sName, stud[i].univer, stud[i].group);
            fprintf(fo, "%s %s %s %s %d\n", stud[i].famly, stud[i].fName, stud[i].sName, stud[i].univer, stud[i].group);
        }
    return 0;
}

Решение задачи: «Чтение из файла слова (неправильный размер)»

textual
Листинг программы
printf("%s %s %s %s %d\n", stud[i].famly, stud[i].fName, stud[i].sName, stud[i].univer, stud[i].group);

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

В данном коде происходит вывод информации о студенте на экран. Каждый элемент информации представлен в формате %s %s %s %s %d\n, где:

  1. %s - это спецификатор формата, который указывает на то, что следующий элемент должен быть выведен как строка.
  2. stud[i].famly - это название переменной, которая содержит фамилию студента.
  3. stud[i].fName - это название переменной, которая содержит имя студента.
  4. stud[i].sName - это название переменной, которая содержит отчество студента.
  5. stud[i].univer - это название переменной, которая содержит название университета студента.
  6. stud[i].group - это название переменной, которая содержит номер группы студента.
  7. %d - это спецификатор формата, который указывает на то, что следующий элемент должен быть выведен как целое число.
  8. \n - это символ новой строки, который указывает на то, что информация о студенте должна быть выведена на новую строку. Таким образом, каждый элемент информации о студенте выводится на новой строке в следующем формате: фамилия, имя, отчество, название университета, номер группы.

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


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

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

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