我創建了一個接受字符串並將它們存儲在二維數組中的程序,它還有一個函數用於在數組中搜索字符串(由用戶輸入)。但是每當我運行程序時,它在到達搜索部分時都會停止工作。任何人都可以指出我的錯誤?從字符串數組中搜索字符串
這裏是我的代碼
#include <stdio.h>
#include <string.h>
#define maxname 40
#define maxlength 70
int acceptSize()
{
int sizeOf;
printf("How many students?");
scanf("%d",&sizeOf);
return sizeOf;
}
void acceptNames(char names[maxname][maxlength],int size)
{
int ctr;
for(ctr=0; ctr<size; ctr++)
{
printf("Student %d:", ctr+1);
scanf("%s",&names[ctr]);
}
}
int searchName(char names[maxname][maxlength], char sname[maxname]){
int ctr2;
for(ctr2=0; ctr2<maxname; ctr2++)
{
if(strcmp(names[ctr2], sname[maxname])==0)
{
return ctr2;
}
}
return -1;
}
int main(){
int ctr,size, choice, result;
char names[maxname][maxlength], sname[maxlength];
size=acceptSize();
acceptNames(names,size);
printf("Enter name to be searched: ");
scanf("%s", &sname[maxlength]);
result=searchName(names, sname);
if(result == -1)
printf("Match is not found.");
else
printf("Match is found!");
}
使用調試器。但是你期望什麼'scanf(「%s」,&sname [maxlength]);'應該這樣做? – Downvoter
即使在打字機上沒有猴子,檢查來自'scanf'家族的返回值是*基本*,我們都會輸入錯誤。它返回成功讀取的項目數。而且你不知道預期的輸入或輸出。例如,如果我輸入「Weather Vane」作爲我的名字,那麼您的程序將無法工作,原因是'scanf'的手冊頁以'%s'格式泄露了原因。 –
它接受將在數組中搜索的字符串。 @Downvoter –