В функции оказывается лишь один первый элемент массива структур 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' в конце строки.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д