Name einer Variablen in Funktion "undeclared"

Tim1995

Grünschnabel
Hallo alle zusammen,

ich wollte mal ein kleines Programm schreiben, das Flughafennamen liest und erkennt, wenn der Name dem Prog. bekannt ist ( siehe unten). Dann sollen die Koordinaten des Flughafens in eine struct gespeichert werden. Dafür wollte ich eine Funktion schreiben, die ein Feld von chars ( als zeiger ) und eine struct ( als zeiger ) übergeben bekommt. Hier mein code für die Implementierung:

C++:
#include "eigen.h"



void einfuegen (char*[] a, koord* koords) {
     if ( *a == "Frankfurt" || *a == "frankfurt" || *a == "EDDF" 
        || *a == "eddf" || *a == "FRANKFURT" || *a == "FRA" || 
        *a == "fra") {
          *a = "Frankfurt";
          *koords = {50,1,N,8,32,O}
          }
     if ( *a == "London" || *a == "london" || *a == "EGLL" ) {}
          }
        // und so weiter

Der Header:

C++:
#ifndef EIGEN_H
#define EIGEN_H

using namespace std;

struct koord {
           int lg;     // steht für längengrad
           int lm;    // steht für "längenminute"
           char lae; // steht für den Hemisphere ( z.B. N )
           int bg;    // ...
           int bm;
           char bre;
    };

void einfuegen ( char *[], koord* );

#endif

Warum bekomme ich die Fehlermeldungen:

10 J:\Cpp\Projekte... "expected `,' or `...' before "a" "
J:\Cpp\Projekte... " In function `void einfuegen(char*)': "
11 J:\Cpp\Projekte... "`a' undeclared (first use this function)"

usw.

Vielen Dank schon im voraus
 
1. Niemals using namespace im Header nutzen!
2. char* a[]
3. So vergleicht man keine Zeichenketten ... (std::strcmp oder einfach direkt std::string nutzen ...) du vergleichst Zeigeradressen ...
4. Strukturen kannst du nur beim Initialisieren so mit Werten belegen ...
5. Willst C++ haben oder C? :D
 
Danke.
5.In C++ ( genauer: Dev-C++ )
Es funktioniert aber immer noch nicht.


Fehlermeldung:

In function `void einfuegen(char**, koord*)':
-cannot convert `char**' to `const char*' for argument `1' to `int std::strcmp(const char*, const char*)'
-cannot convert `char**' to `const char*' for argument `1' to `int std::strcmp(const char*, const char*)'
-cannot convert `char**' to `const char*' for argument `1' to `int std::strcmp(const char*, const char*)'
...
expected `)' before '{' token
expected primary-expression before '}' token
expected `;' before '}' token

Hier nochma der jetztige Code:
C++:
#include "eigen.h"

void einfuegen (char* a[], koord* koords) {
     if (std::strcmp(a,"Frankfurt") || std::strcmp(a,"frankfurt")  ||  
         std::strcmp(a,"EDDF") || std::strcmp(a,"eddf")|| std::strcmp(a,"FRA")
          || std::strcmp(a,"FRANKFURT") || std::strcmp(a,"fra" ) {
          std::strcpy ( ,a"Frankfurt");
          *koords = {50,1,N,8,32,O}
          }
     if ( *a == "London" || *a == "london" || *a == "EGLL" ) {}
          }

Der header hat sich bis auf des using namespace std; nichtt verändert.
mfg

P.S.: zu 4: das gibt aber keine Fehlermeldung aus;)
 
Zuletzt bearbeitet:
Moin,

ich kenne zwar Dein Dev-C++ nicht und auch die Fkt. "stcmp" nicht, aber die Fehlermeldung sagt doch eigentlich schon alles!

Du versucht dabei ein "char**" nach "const char*" zu konvertieren!
Leider kann ich es hier nicht weiter nachvollziehen, da ich hier im VS6 sowas wie "char* a[]" eh' nicht deklarieren darf .... (allenfalls "char* a[10]" .....)

Gruß
Klaus
 
Zurück