В функции оказывается лишь один первый элемент массива структур Book, в любом варианте кода - C (СИ)
Формулировка задачи:
Здравствуйте! Не могу передать указатель на массив структур. Почему-то в функции оказывается лишь один первый элемент массива структур Book, в любом моем варианте кода. Везде пишут, что, чтобы передать массив структур в функцию, достаточно лишь передать его первый элемент в функцию, но не работает:
В идеале, мне нужно передать не всю структуру, а только Book[n].Number, это вообще не получается сделать, все время ругается компилятор.
Листинг программы
- #include <stdio.h>
- #include <conio.h>
- #include <tchar.h>
- #include <string.h>
- #include <stdlib.h>
- #define n 20
- struct Phone
- {
- char Name[20]; //ФИО
- char Adress[32]; //Адрес
- char Number[12]; //номер телефона
- }T;
- struct Phone Book[n];
- ...
- void sort (struct Phone *Book, int *B) //пузырьковая сортировка
- {
- int i,j;
- for (i=0;i<n-1;i++)
- {
- for(j=n-1;j>i;j--)
- {
- ...
- }
- }
- }
- ...
- int main()
- {
- sort (&Book[0], B);} //вызов функции, пробовала писать просто Book, тоже идет хорошо, но в функции только первый элемент
Решение задачи: «В функции оказывается лишь один первый элемент массива структур Book, в любом варианте кода»
textual
Листинг программы
- for (j = 0; j < 20; j++) {
- if (str[i]!='!'){
- Book[k].Name[j]=str[i];
- i++;
- } else {
- Book[k].Name[j]= '\0'; // Добавляем '\0' в конец строки
- i++;
- break;
- }
- }
- memset(Book[k].Adress,' ',sizeof(Book[k].Adress));
- for (j = 0; j < 32; j++) {
- if (str[i]!='!') {
- Book[k].Adress[j]=str[i];
- i++;
- } else {
- Book[k].Adress[j]= '\0'; // Добавляем '\0' в конец строки
- i+=2;
- break;
- }
- }
- memset(Book[k].Number,' ',sizeof(Book[k].Number));
- for (j = 0; j < 10; j++) {
- Book[k].Number[j]=str[i];
- i++;
- }
- Book[k].Number[j]='\0';
Объяснение кода листинга программы
В этом коде:
- Создается массив структур Book, каждая структура содержит три поля: Name, Adress и Number.
- В цикле заполняются поля Name, Adress и Number структур Book.
- Для каждого поля используется свой цикл for.
- Если встречается символ '!' в исходной строке, то добавляется символ '\0' в конец строки, чтобы отделить одно поле от другого.
- После заполнения всех полей, в поле Number добавляется символ '\0' в конце строки.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д