mikrocontroller.net

Forum: PC-Programmierung Mehrfacharray an Funktion übergeben?


Autor: Flo (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Walter (Gast)
Datum:

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

Autor: Walter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.