Forum: PC-Programmierung Mehrfacharray an Funktion übergeben?


von Flo (Gast)


Lesenswert?

Hallo, ich habe ein Problem und zwar habe ich ein Mehrfach array
'strings [25][80]' in das ich z.b. zehn namen mit max 80 zeichen 
reinschreibe und möchte es dann an eine funktion übergeben und die namen 
dann alphabetisch sortieren aber ich kriege die übergabe nicht hin weil 
ich die ganze zeit eine fehlermeldung diese fehlermeldung kriege.

Hier ist mein Quellcode:
#include "stdafx.h"
#include <string.h>
void String_einlesen();
void sortieren(char *ptr);
int  a=12;
char strings[25][80];
int count=0;

int main (void)
{
String_einlesen();
sortieren(strings[0]);

while (1)
{

}
  return 0;
}

void String_einlesen()
{
int ch=0;
while(ch=(getchar()) != 'Y')
{
fflush(stdin);
scanf("%s",strings[count]);
fflush(stdin);
count++;
}
}

void sortieren(char *ptr)
{
if(strcmp(ptr[1],ptr[0])>0)
printf("yes");
else
printf("no");
  }


und das ist die Fehlermeldung:
error C2664: 'strcmp': Konvertierung des Parameters 1 von 'char' in 
'const char *' nicht möglich

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Nun, der an "sortieren" übergebene Parameter ist vom Typ char*. Den 
dereferenzierst Du beim Aufruf von strcmp, übergibst also zwei einzelne 
chars. strcmp aber erwartet zwei char-Pointer, nicht zwei chars.

Abhilfe: Korrigiere den an "sortieren" übergebenen Parameter zu char**, 
und rufe "sortieren" mit einem korrekten Parameter auf. Derzeit 
übergibst Du einen Pointer auf char, Du willst aber Pointer auf Pointer 
auf char (char**) übergeben.

Literaturhinweis:
Brian Kernighan & Dennis Ritchie "Programmieren in C", zweite Auflage, 
Hanser-Verlag.

von Walter (Gast)


Lesenswert?

ptr[0] ist dasselbe wie *ptr und damit ein char
strcmp erwartet aber einen Zeiger auf ein char

von Walter (Gast)


Lesenswert?

>Derzeit übergibst Du einen Pointer auf char, Du willst aber Pointer auf >Pointer 
auf char (char**) übergeben.
da will er aber nicht, er wille einen pointer auf ein Array übergeben,
also char array[][80]

auf die Zeilen kann er dann mit array[i] zugreifen

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.