簡體   English   中英

為什么我的C程序不打印if語句的輸出?

[英]Why does my C program not print output from an if statement?

該程序應輸出兩個位於if語句中的變量。 但是,它不會,但是外面打印的任何東西都可以。

#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: \n");
    fgets(search_for, 80, stdin);
    find_track(search_for);
    return 0;
}

我希望它輸出以顯示曲目號和關聯的字符串,但事實並非如此。

fgets函數將讀取直到換行符的一行文本,並且如果有空格,它將讀取並存儲換行符 因此,例如,如果您輸入“ here”,那么search_for將包含"here\\n" 您的字符串都不包含換行符,因此您什么也找不到。

您需要從閱讀的字符串中刪除換行符:

search_for[strcspn(search_for,"\n")]=0; 

strcspn函數從字符串的開頭返回不在給定列表中的字符數。 因此,如果您的字符串包含換行符,它將返回換行符的索引,否則它將包含終止空字節的索引。

暫無
暫無

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

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