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

标签 ios c xcode xcode8

我是 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/

相关文章:

ios - Swift UITableview 单元格复选标记和搜索不起作用

ios - Swift 2.2 内存管理

C 程序结束时的错误处理

objective-c - 调试过度释放的对象,NSZombie 的问题

ios - 我在 Swift 应用程序中的哪里存储文件选项?

c - Cocoa 常量名称中的 "k"代表什么

c - Ubuntu 中的段错误

iphone - Xcode - 根据正在编译代码的设备修改库搜索路径

objective-c - 将文件类型/扩展名关联到基于非文档的 Cocoa 应用程序

ios - 施加力后的 ARKit 获取节点的位置