Другие результаты в linux ОС, чем в моей Windows ОС - PullRequest
0 голосов
/ 25 мая 2020
void destroi_playlist_na_jukebox(jukebox j,char* resto)
{
    int i,k=1,musicas_numero;
    char nome_playlist[MAX_LINHA];
    playlist remove_playlist;

    i= sscanf(resto,"%[^\n^\r]",nome_playlist);


    if( (i==1) && (verifica_existe_playlist(j,nome_playlist) == 1) )
    {
        remove_playlist = (playlist)tira_playlist_jukebox(j,nome_playlist);
        musicas_numero = numero_musicas(remove_playlist);

        if( musicas_numero > 0 )
        {
            while( k <= musicas_numero )
            {
               remove_musica(remove_playlist,1);
               k++;
             }

        }
        destroiGenPlaylist( (void *) remove_playlist);
        printf("Playlist eliminada.\n");
    }
    else
       if( (verifica_existe_playlist(j,nome_playlist) !=1) && (i==1) ) // Problem is here
       {
           printf("Playlist inexistente.\n");
       }
           else printf("Dados invalidos.\n");
 }

Проблема в последнем операторе if. Я получаю resto, который не подчиняется первому условию if и переходит ко второму, там все хорошо, но проблема в том, что на моем компьютере (у него windows os) он почему-то печатает "Dados invalidos" и в моем колледже компилятор (на основе linux os) выводит "Playlist Existente". Что происходит и как я могу это решить? Правильный ответ - это то, что печатается на моем компьютере.

1 Ответ

2 голосов
/ 25 мая 2020

Вы проверяете \r\n, что является окончанием строки Windows. Linux / UNIX окончание строки просто \n. Итак, вы можете сначала проверить, над какой системой вы работаете, и посмотреть, как действовать дальше, или вы можете поискать функцию, которая проверяет это автоматически.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...