gpt4 book ai didi

ios - xcode 跳转一个方法并完成

转载 作者:行者123 更新时间:2023-11-29 00:25:34 26 4
gpt4 key购买 nike

我是 Xcode 编码的新手,但奇怪的是它会跳转一些指令并完成程序而不打印结果。 find_track 方法不打印歌曲的位置并跳到结尾。可以构建代码并且“显然”没有错误(它来自 C 编码书)。任何熟悉 Xcode 的人都可以提供帮助?

char tracks[][80] = {"my spirit","code songs"};
void find_track(char search_for[]) {
int i;
for (i = 0; i < 2; i++){
if (strstr(tracks[i],search_for)){
printf("Track %i: '%s'\n", i, tracks[i]);
}
}
}
int main()
{
char search_for[80];
printf("Search for: \n");
fgets(search_for, 80, stdin);
find_track(search_for);
return 0;
}
** Program ended with exit code: 0 // exit message from Xcode

最佳答案

fgets 在缓冲区中保留换行符(输入键)。你可以很容易地测试它

int main(void)
{
char search_for[80];
printf("Search for: \n");
fgets(search_for, 80, stdin);
printf("%s", search_for);

for (size_t i=0; i<strlen(search_for); i++)
{
printf ("%X - %c\n", search_for[i], search_for[i]);
}

return 0;
}

终端输出的my spirit会是

0x6D - m
0x79 - y
0x20 -
0x73 - s
0x70 - p
0x69 - i
0x72 - r
0x69 - i
0x74 - t
0x0A -

最后的 0x0A 是 '\n' 字符:换行符。

将其直接传递给 find_track 函数 strstr 也会尝试匹配该字符。如此简单的解决方案是删除该字符:

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

char tracks[][80] = { "my spirit", "code songs" };

void find_track(char search_for[])
{
int i;
for (i = 0; i < 2; i++)
{
if (strstr(tracks[i], search_for) != NULL)
{
printf("Track %i: %s\n", i, tracks[i]);
}
}
}
int main(void)
{
char search_for[80];
printf("Search for: \n");
fgets(search_for, 80, stdin);
printf("%s", search_for);

// Remove newline
search_for[strlen(search_for)-1] = '\0';

find_track(search_for);

return 0;
}

关于ios - xcode 跳转一个方法并完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43117379/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com