左对齐的字符串在下一行错误地打印出来

时间:2019-05-16 14:21:03

标签: c arrays string printf

我目前正在尝试打印输入数组,仅2D数组的一部分保持对齐状态,而另一部分则发送到下一行,任何帮助都将非常有用!这个问题专门与我的printSongInfo函数有关,但包含了其余代码以帮助理解。我正在寻找要在行的前35个字符中显示为左对齐并显示的歌手,然后在转到下一行并重复此过程之前,在同一行的前35个字符中显示为左对齐并显示的歌曲所有10个索引。

#include <string.h>
#include <stdio.h>
#include <stdlib.h>

#pragma warning(disable:4996)

int getSongInfo(struct songInfo *pFillInfo, char *artistName, char *songName);
void printSongInfo(struct songInfo songList[10]);

struct songInfo {

    char *songArtist;
    char *songTitle;
};

int main(void)
{
    struct songInfo *fillPtr;
    struct songInfo 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;
}

void printSongInfo(struct songInfo songList[10])
{
    int counter = 0;


    while (counter != 10)
    {
        printf("%-35s %-35s\n", songList[counter].songArtist, songList[counter].songTitle);
        counter++;
    }

}

我正在寻找匹配的号码,该号码必须相同且不会发送到下一行。 所以1和1应该在同一行上看到。

当前输出:

enter image description here

0 个答案:

没有答案