文字列を受け取り、2次元配列で格納するプログラムを作成しました。また、配列内の文字列(ユーザーが入力したもの)を検索する関数も用意されています。しかし、プログラムを実行するたびに、検索部分に達すると機能しなくなります。誰も私のエラーを指摘できますか?文字列の配列から文字列を検索する
は、ここでまた
if(strcmp(names[ctr2], sname[maxname])==0)
がしてきたはずです
char sname[]; // See comment#1 by weather-vane
をしてきたはずです私のコード
#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'として自分の名前を入力した場合、あなたのプログラムは'%s'形式の 'scanf'のマニュアルページによって漏洩された理由で動作しません。 –
配列内で検索される文字列を受け入れます。 @Downvoter –