Ich versuche, eine Zahl und eine Reihe von String S als Eingabe zu übergeben. Hier enthält die Zeichenfolge S einen Namen, gefolgt von einem Komma und dann gefolgt von einer ganzen Zahl. Das Programm muss den Namen mit der höchsten entsprechenden Nummer anzeigen.Wie lese ich einen Namen und einen Integer-Wert in einer durch Kommas getrennten Zeichenfolge?
Betrachten wir die Input:
4
Will,13
Bob,7
Mary,56
Gail,45
, für die der Output:
Mary
da die Anzahl an Mary entspricht 56 ist, die die höchste ist.
Das Problem, das ich bin vor ist der Name und die Nummer in zwei Arrays nämlich habe ich versucht, zweidimensionale Arrays
w[][] a[][]
hier zu bekommen, aber ich bin nicht in der Lage, die durch Komma getrennte Werte zu lesen. Das ist mein Code:
#include <stdio.h>
#include <ctype.h>
int main(){
char W[200][1000];//Two dimensional arrays to store names
int a[200];//To store the numbers
int i,n;
scanf("%d",&n);//Number of Strings
for (i=0; i<n; i++) {
scanf("%[^\n]s",W[i]);//To read the name
getchar();//To read the comma
scanf("%d",&a[i]);//To read the number
}
printf("\n");
for (i=0; i<n; i++) {
printf ("W[%d] = %s a[%d] = %d\n" ,i,W[i],i,a[i]);//Displaying the values
}
//To find out the maximum value
max = a[0];
for(i=0;i<n;i++){
if(a[i]>=max) { a[i] = max; pos = i; }
}
printf("\n%s",W[pos]); //Print the name corresponding to the name
return(0);
}
Also im Grunde möchte ich vor dem Komma, den Namen extrahieren in das Zeichenfeld und die Zahl nach dem Komma in die Anzahl Array.
Wie kann ich diesen Code korrigieren?
Ja, ich stimme zu, dass das scanf nicht verwendet werden kann. In der Tat kann ich es mit fgets() versuchen. Danke @Basile Starynkevitch –
Ich habe eine Lösung mit malloc und scanf() Formatierung.Es wäre großartig für Ihren Vorschlag @Basile Starynkevitch –