【发布时间】:2020-09-12 04:38:37
【问题描述】:
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 语句中。我得到了不遵守第一个 if 语句并转到第二个的 resto,那里一切都很好,但问题是在我的计算机上(它有一个 Windows 操作系统)它出于某种原因在我的大学编译器上打印“Dados invalidos”(基于 linux 操作系统)它打印“Playlist inexistente”。发生了什么事,我该如何解决?正确答案是我的电脑上打印的内容。
【问题讨论】:
-
您能发布minimal、complete和可编译 可重现代码吗?跨度>
-
快速浏览一下,您的问题可能不在您发布的函数中。您能否确认
verifica_existe_playlist在两台机器上是否返回相同的值?如果verifica_existe_playlist返回不同的值,那就是问题所在。 -
已经解决了这个问题,所以这个帖子可以忽略。不过还是谢谢你的回答
-
scanf("%[^\n^\r]", ...您不想为变量考虑换行符、回车符和插入符号吗?这出乎意料:)