Assignment to expression with array type - C (СИ)
Формулировка задачи:
Что я делаю не так подскажите.
#include <conio.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
/*1) створіть структуру Club з полями: name - назва клубу; city - місто, яке він представляє;
* score - кількість набраних очок;*/
struct Club
{
char cCity[255];
char cName[255];
char cScore[255];
};
int main(void)
{
struct Club sClub;
signed int i;
for ( i = 0; i < 255; i++ )
{
sClub.cCity[i] = 0;
sClub.cName[i] = 0;
sClub.cScore[i] = 0;
}
/* 2) створіть файл, в якій внесіть дані - майбутні значення полів структури Club
* (кожне поле - з нового рядка, без пробілів!), кількість клубів - не менше 10
* (розташувати у файлі в довільному порядку, не залежно від кількості очок);*/
FILE *pClub;
pClub = fopen ( "FileAllClubs.txt", "a+" ); //3) збережіть створений файл як текстовий;
printf ( "Input name city: " );
gets ( sClub.cCity );
printf ( "Input name club: " );
gets ( sClub.cName );
printf ( "Input score club: " );
gets ( sClub.cScore );
fprintf ( pClub, "%s\n%s\n%s\n", &sClub.cCity[0], &sClub.cName[0], &sClub.cScore[0] );
fclose ( pClub );
for ( i = 0; i < 255; i++ )
{
sClub.cCity[i] = 0;
sClub.cName[i] = 0;
sClub.cScore[i] = 0;
}
/*4) введіть з клавіатури число N - кількість клубів,
дані про які потрібно прочитати з файлу;*/
signed int N = 0;
printf ( "Input N: " );
scanf ( "%d", &N );
pClub = fopen ( "FileAllClubs.txt", "r+" );
for ( i = 0; i < N; i++)
{
fgets ( sClub.cCity, 255, pClub );
fgets ( sClub.cName, 255, pClub );
fgets ( sClub.cScore, 255, pClub );
puts ( sClub.cCity );
puts ( sClub.cName );
puts ( sClub.cScore );
}
fclose ( pClub );
struct Club *aArrayClub = ( struct Club* ) malloc ( N * sizeof ( struct Club ) ); //5) виділіть динамічно пам’ять для масиву з n структур;
if ( ( aArrayClub = ( struct Club* ) malloc ( N * sizeof ( struct Club ) ) ) == NULL )
{
printf ( "ERROR\n" );
exit ( 1 );
}
for( i = 0; i < N; i++) //6) прочитайте у відповідний масив максимально можливу кількість даних про клуби;
{
aArrayClub[i].cCity = sClub.cCity;
aArrayClub[i].cName = sClub.cName;
aArrayClub[i].cScore = sClub.cScore;
}
/*7) здійснить сортування даного масиву за спаданням кількості очок клубів -
першим елементом щоб стала структура, клуб якої має максимальну кількість очок,
і далі - в порядку зменшення;Примітка: - з метою обміну структур місцями оголосіть
додаткову аналогічну структуру, в яку тимчасово будете копіювати ті, що підлягають перестановці;
доступ до елементів масиву структур здійснюйте за допомогою покажчиків!*/
//8) дані відсортованого масиву виведіть до іншого текстового файлу (по можливості використовуючи форматування для кращої читабельності); перевірте файл на предмет правильного порядку розташування в ньому даних про клуби.
return 0;
}Решение задачи: «Assignment to expression with array type»
textual
Листинг программы
aArrayClub[i].cCity = sClub.cCity; aArrayClub[i].cName = sClub.cName; aArrayClub[i].cScore = sClub.cScore;
Объяснение кода листинга программы
- В данном коде происходит присваивание значений переменным типа массив с использованием индекса
i. aArrayClub- название массива, в который производятся присваивания.i- индекс, используемый для обращения к элементам массиваaArrayClub.sClub- название структуры, значения которой присваиваются элементам массиваaArrayClub.cCity- название поля структурыsClub, значение которого присваивается соответствующему элементу массиваaArrayClub.cName- название поля структурыsClub, значение которого присваивается соответствующему элементу массиваaArrayClub.cScore- название поля структурыsClub, значение которого присваивается соответствующему элементу массиваaArrayClub.