簡體   English   中英

為什么程序沒有給我想要的 output? 出了什么問題?

[英]Why is the program not giving me the desired output? What's gone wrong?

所以我是 C 編程的新手,我在其中一本書中看到了一個程序並嘗試運行它。 該程序獲取一個字符串並檢查主字符串中的字符串位置並輸出字符串 id 和字符串。

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

char tracks[][80] = {
    "I left my heart in Harvard Med School",
    "Newark, Newark - a wonderful town",
    "Dancing with a Dork",
    "From here to maternity",
    "The girl from Iwo Jima",
};

void find_track(char search_for[])
{
    int i;
    for (i = 0; i < 5; i++) {
        if (strstr(tracks[i], search_for))
            printf("Track %i: '%s'\n", i, tracks[i]);
    }
}

int main()
{
    char search_for[80];
    printf("Search for: ");
    fgets(search_for, 80, stdin);
    find_track(search_for);
    return 0;
}

這是終端 output:

PS C:\Users\G\Documents\C programs> gcc try1.c -o try1 -Wall -pedantic -std=c99
PS C:\Users\G\Documents\C programs> ./try1
Search for: town
PS C:\Users\G\Documents\C programs> 

如您所見,它應該已經輸出了軌道 ID 和軌道。 但它不是,任何形式的幫助表示贊賞!

fgets留下一個尾隨換行符,因此您實際上是在搜索"town\n"而不是"town" ,這顯然不會產生匹配項。 修剪換行符:

fgets(search_for, 80, stdin);
search_for[strcspn(search_for, "\n")] = '\0';

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM