![](/img/trans.png)
[英]c programming - Why this simple calculator using switch doesn't work
[英]C-Programming.Why Doesn't This Work?
以下程序應搜索多維數組。 當我輸入town
一詞作為輸入時,它應該返回Track 1: Newark,Newark-A Wonderful Town
但我沒有收到任何輸出(什么也沒有發生),有什么解決辦法?
我正在編寫《 Head First C》書。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/* Run this program using the console pauser
or add your own _getch, system("pause") or input loop */
char tracks[][80]={
"I Left My Heart In Harvard Med School",
"Newark,Newark-A Wonderful Town",
"From Here to Maternity",
"The Girl From Iwo Jima",
};
void find_track(char search_for[]){
int i;
for (i=0;i<=4;i++){
if(strstr(tracks[i],search_for)){
printf("Track %i:'%s' \n",i,tracks[i]);
}
}
}
int main(int argc, char *argv[]) {
char search_for[80];
printf("Search for: ");
fgets(search_for,80,stdin);
find_track(search_for);
return 0;
}
如上所述, fgets
從您的輸入中存儲換行符,它將不匹配。 只要您在標題中匹配測試的大小寫,從該search_for
字符串中search_for
最后一個字符就可以使它工作。 另外,請注意,您的for
循環應使i < 4
而不是i <= 4
。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
char tracks[][80]={
"I Left My Heart In Harvard Med School",
"Newark,Newark-A Wonderful Town",
"From Here to Maternity",
"The Girl From Iwo Jima",
};
void find_track(char search_for[]){
int i;
for (i=0;i<4;i++){
if(strstr(tracks[i], search_for)){
printf("Track %i:'%s' \n",i,tracks[i]);
}
}
}
int main(int argc, char *argv[]) {
char search_for[80];
printf("Search for: ");
fgets(search_for,80,stdin);
search_for[strlen(search_for)-1] = '\0'; // truncate input
find_track(search_for);
return 0;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.