Я пытаюсь распечатать мои 10 различных массивов моего struct songList [10]. Я использовал отладчик и подтвердил, что каждый запрошенный ввод правильно хранится в каждом индексе, проблема лежит в моей функции печати. Я получаю «Исключение, выданное в 0x0003187E в файле mini1.exe: 0xC0000005: расположение чтения нарушения доступа 0xCCCCCCCC». Ошибка при попытке перебрать при печати строки с запрошенным индексом. Любая помощь будет большой благодарностью! Также я пытаюсь напечатать каждый songArtist и songTitle, начиная с индекса 0 массива songList [10]. Он должен печататься как по левому краю, так и для каждого из них должно быть 35 символов.
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#pragma warning(disable:4996)
int getSongInfo(struct songInfo *pFillInfo, char *artistName, char *songName);
int printSongInfo(songInfo *songList[]);
struct songInfo {
char *songArtist;
char *songTitle;
};
int main(void)
{
struct songInfo *fillPtr, songList[10];
fillPtr = &songList[0];
char tempArtist[30][10];
char tempSong[30][10];
int i = 0;
int counter = 0;
int arrayCounter = 0;
while (counter != 10)
{
printf("Please enter the artist name: ");
fgets(tempArtist[counter], sizeof(tempArtist[counter]), stdin);
printf("Please enter the song name: ");
fgets(tempSong[counter], sizeof(tempSong[counter]), stdin);
getSongInfo(&fillPtr[arrayCounter], tempArtist[counter], tempSong[counter]);
printf("Song and Artist Captured! \n");
counter++;
arrayCounter++;
}
printSongInfo(&fillPtr);
}
int getSongInfo(struct songInfo *pFillInfo, char *artistName, char *songName)
{
pFillInfo->songArtist = (char*)malloc(strlen(artistName) + 1);
pFillInfo->songTitle = (char*)malloc(strlen(songName) + 1);
strcpy(pFillInfo->songArtist, artistName);
strcpy(pFillInfo->songTitle, songName);
return 1;
}
int printSongInfo(songInfo *songList[])
{
int counter = 0;
while (counter != 10)
{
printf("%-35s", songList[counter]->songArtist);
printf("%-35s\n", songList[counter]->songTitle);
counter++;
}
return 1;
}