Übergeben von Arrays von Zeichenfolgen in C-Funktionen
ich bin derzeit verwirrt, wie kann ich übergeben Sie ein array von strings an eine Funktion. Ich habe erstellt ein eindimensionales array. Die Methode, die ich gemacht habe funktioniert, aber es scheint überflüssig, und ich denke, es gibt einen besseren Weg, dies zu tun, aber ich bin mir nicht sicher, wie. Ich bin auf der Suche nach einer Möglichkeit, wo ich Vorbeigehen kann alle 4 Elemente, um die Funktion zu einem Zeitpunkt.
Hier ist das Beispiel von meinem code.
#include <stdio.h>
#include <string.h>
#include <ctype.h>
void sort(char *,char *,char *, char *);//Function prototype
int main()
{
char *string_database[4]={'\0'};
string_database[0]="Florida";
string_database[1]="Oregon";
string_database[2]="California";
string_database[3]="Georgia";
sort(string_database[0],string_database[1],string_database[2],string_database[3]);
return 0;
}
void sort(char *string1, char *string2, char *string3, char *string4)
{
printf("The string is= %s\n",string1);
printf("The string is= %s\n",string2);
printf("The string is= %s\n",string3);
printf("The string is= %s\n\n\n",string4);
}
Vielen Dank im Voraus, ich Schätze alle Antworten zu meinem problem.
- möglich, Duplikat der Übergabe von mehrdimensionalen arrays als Funktionsparameter in C
- Dies ist nicht ein multi-dimensionales array, es ist ein eindimensionales zeigerarray.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Kannst du es so machen:
sizeof(str)
imsort()
- Funktion).Sie in der Regel übergeben Sie die Länge des Arrays zusammen mit dem array selbst. Die
char *strings[]
ist wirklich nur sintactic Zucker, obwohl, so dass, wenn Sie möchten, halten Sie die Funktions-Prototyp ohne parameter-Namen können Siechar **strings
als gut, so dass der code könnte wie folgt Aussehen:Auch, wie Jite unten zeigt, mit einer syntax wie
char *strings[]
Irre geführt werden Sie oder ein anderer Leser des Codes zu denken, Sie ' re Umgang mit einem statischen matrix, während das ist nicht wahr; daher sollten Sie entscheiden sich für den einfacherenchar **strings
syntax.*strings[]
als Funktion argument ist schlechte Praxis ist, meiner Meinung nach, ist es einfacher, versehentlich tunsizeof
auf (was ungültig ist).*argv[]
. Es ist programmer ' s task zu verwendensizeof
richtig.strings
ist ein Zeiger auf Zeiger auf char: in C sind arrays realisiert als Zeiger auf das erste element, wenn Sie leiten Sie an Funktionen, es ist der Zeiger, der bekommt als parameter übergeben.strings
soll, zu empfangen, was in der main-routine wurde ein array von Zeigern auf char, also muss es einen Zeiger auf das erste element: ein Zeiger auf Zeiger auf char.