Ich habe ein Programm erstellt, das Zeichenfolgen akzeptiert und sie in einem zweidimensionalen Array speichert. Es hat auch eine Funktion, die nach einer Zeichenfolge (die vom Benutzer eingegeben wurde) im Array sucht. Aber jedes Mal, wenn ich das Programm ausführe, hört es auf zu arbeiten, wenn es den suchenden Teil erreicht. Kann jemand meinen Fehler aufzeigen?Suchen einer Zeichenfolge aus einem Array von Zeichenfolgen
Hier ist mein Code
#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!");
}
Verwenden Sie einen Debugger. Aber was erwartest du 'scanf ("% s ", & sname [maxlength]); – Downvoter
Überprüfen Sie den Rückgabewert von 'scanf' Familie ist * unbedingt *, auch wenn es keinen Affen auf der Schreibmaschine gibt, geben wir alle Fehler ein. Es gibt die Anzahl der erfolgreich gelesenen Elemente zurück. Und Sie geben keinen Hinweis auf erwartete Eingabe oder Ausgabe. Zum Beispiel, wenn ich meinen Namen als "Weather Vane" eingeben, wird Ihr Programm nicht funktionieren, aus Gründen, die von der man-Seite für 'scanf' mit dem'% s'-Format angegeben werden. –
akzeptiert es die Zeichenfolge, die im Array gesucht wird. @Downvoter –