Проверка строк и вывод - C (СИ)
Формулировка задачи:
Добрый вечер!
Сделал проверку строк, но дальше он не выводит, только самую первую строку!
То есть, мне надо, что бы он вывел всех с города Tallinn и Tartu!
Вот не получается сделать... Буду признателен за помощь!!!
Файл F1.txt
#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; }
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);
Объяснение кода листинга программы
- В цикле while происходит сравнение строк, где st[size3].stads.city сравнивается с Sort1. Если они не равны, то выполняется блок кода внутри цикла.
- В блоке кода внутри цикла увеличивается значение size3 на единицу.
- После завершения цикла, выводится значение st[size3].stads.city.
- В блоке кода после цикла происходит запись в файл fData. В записи указываются значения st[size3].name, st[size3].mphone, st[size3].stads.street и st[size3].stads.city, разделенные пробелами. Каждое значение заключают в кавычки.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д