Проверка строк и вывод - C (СИ)

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

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

Добрый вечер! Сделал проверку строк, но дальше он не выводит, только самую первую строку! То есть, мне надо, что бы он вывел всех с города Tallinn и Tartu! Вот не получается сделать... Буду признателен за помощь!!!
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 10
#define Sort1 "Tallinn"
#define Sort2 "Tartu"
 
struct data { //Personal data structure
    char name[21]; //Name of person
    int mphone; //Mobile phone of person
    struct ads { //Structure of Address
        char street[101]; //Street address
        char city[101]; //City
    } stads;
};

//Function to find residents of Tallinn and Tartu
    int resCity (char fname[], struct data st[]) {
    FILE *fopen(), *fData;
    int size3=0;
    int k=0;
        if((fData=fopen("F2.txt", "w")) == NULL){
            printf("Error oppening file F1.txt");
            exit(1);
        }
    
    //Residents of Tallinn
    printf("\n\nResidents of Tallinn:\n");
        while(strcmp (st[size3].stads.city,Sort1)!=0)
        {
            size3++;
        }
    
    puts(st[size3].stads.city);
    fprintf (fData, "%s %d %s %s\n", st[size3].name, st[size3].mphone, st[size3].stads.street, st[size3].stads.city);
    
    //Residents of Tartu
    printf("\n\nResidents of Tartu:\n");
        while(strcmp (st[size3].stads.city,Sort2)!=0)
        {
            size3 ++;
        }
    
    puts(st[size3].stads.city);
    fprintf (fData, "%s %d %s %s\n", st[size3].name, st[size3].mphone, st[size3].stads.street, st[size3].stads.city);
    
    return size3;
    fclose(fData);
}
 
int main(void) 
{
    FILE *fData;
    char fname[21];
    struct data st[N];
    int i;
    int i3;
    int size=0;
    int size3=0;
    
    size=readData(fname, st);
    
    for(i=0; i < size; i++){
        printf("%s %d %s %s\n", st[i].name, st[i].mphone, st[i].stads.street, st[i].stads.city);
    }
    
    size3=resCity(fname, st);
    
    return 0;
}
Файл F1.txt
Artur 0000000 Vaikne Keila
Aleksander 1111111 Ehitajate Tallinn
Aisel 2222222 Paekaare Tallinn
Aleksandra 3333333 Pae Kunda
Sergei 4444444 Kunsti Narva
Misha 5555555 Jaama Tartu
Dmitri 6666666 Pae Tartu
Konstantin 7777777 Paekaare Tallinn
Roman 8888888 Linnamae Tallinn
Hennadii 9999999 Jaama Tartu

Решение задачи: «Проверка строк и вывод»

textual
Листинг программы
while(strcmp (st[size3].stads.city,Sort1)!=0)
* * * * {
* * * * * * size3++;
* * * * }
puts(st[size3].stads.city);
* * fprintf (fData, "%s %d %s %s\n", st[size3].name, st[size3].mphone, st[size3].stads.street, st[size3].stads.city);

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

  1. В цикле while происходит сравнение строк, где st[size3].stads.city сравнивается с Sort1. Если они не равны, то выполняется блок кода внутри цикла.
  2. В блоке кода внутри цикла увеличивается значение size3 на единицу.
  3. После завершения цикла, выводится значение st[size3].stads.city.
  4. В блоке кода после цикла происходит запись в файл fData. В записи указываются значения st[size3].name, st[size3].mphone, st[size3].stads.street и st[size3].stads.city, разделенные пробелами. Каждое значение заключают в кавычки.

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


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

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

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