tutorials.de Buch-Aktion 05/2012
Seite 1 von 2 12 LetzteLetzte
ERLEDIGT
JA
ANTWORTEN
17
ZUGRIFFE
9258
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von Meccan
    Meccan Meccan ist offline Mitglied Brokat
    Registriert seit
    Jan 2005
    Ort
    Wiesbaden
    Beiträge
    252
    Hallo Leute,

    ich habe ein Problem mit der definition von einen char Array.
    hier der Code:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    
    int main()
    {
        char feld[2][80] = {"gammel","held"};
        feld[1] = "blaa";
        printf("%s %s \n", feld[0], feld[1]);
     
        return 0;
    }
    mein Ziel ist es einfach verschdieden lange Wörtet maximal mit der länge 80
    in einen Array zu Speicher.
    Die Definition klappt ohne probleme in char feld[2][80] = {"gammel","held"}; aber wenn ich mit feld[0] = "bla" den ersten Feld im Array ein neues Wort zu weisen will kommt immer die Fehlermeldung bei kompilieren:
    "warning: assignment makes integer from pointer without a cast"

    danke schonmal im voraus für eure hilfe.

    MFG meccan
     

  2. #2
    Avatar von pschilling
    pschilling pschilling ist offline Mitglied Gold
    Registriert seit
    Apr 2007
    Ort
    Duisburg (NRW)
    Beiträge
    192
    Hi,

    probiers mal mit...

    Code :
    1
    2
    
        char feld[2][80] = {"gammel","held"};
        strcpy(feld[1],"blaa");

    ... dann klappts auch mit dem Kompilieren

    Gruß,

    Peter

    Und übrigens hast du ein 2-Dimensionales char-Array, kein char-Array
     
    Der Computer wird das tun, was du programmierst - nicht das, was du willst ;-)

  3. #3
    Avatar von Meccan
    Meccan Meccan ist offline Mitglied Brokat
    Registriert seit
    Jan 2005
    Ort
    Wiesbaden
    Beiträge
    252
    dank dir hat alles funtkioniert.
    Ja stimmt hab ein zweidimensionales Char-Array, aber eigentlich
    ja auch nur ein eindimensionales welches Zeicheketten speichert

    MFG Meccan
     

  4. #4
    Avatar von Meccan
    Meccan Meccan ist offline Mitglied Brokat
    Registriert seit
    Jan 2005
    Ort
    Wiesbaden
    Beiträge
    252
    und schon gibts das nächste Problem.
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    
    void printArray(char feld, int length)
    {
     
    //einfache und foramtierte Ausgabe des array's
     
    }
     
    int main()
    {
    int length = 2;
     
    char feld[length][80] = {"gammel","held"};
    strcpy(feld[1],"blaa");
     
    printArray(feld, length);
     
    return 0;
    }

    wenn ich nun versuche die Funktion printArray mit den Argumenten aufzurufen
    bekomm ich die Fehlermeldung:
    "warning: passing arg 1 of `printArray' from incompatible pointer type"

    hoffe du kannst mir auch da weiterhelfen.

    mfg meccan
     

  5. #5
    Avatar von pschilling
    pschilling pschilling ist offline Mitglied Gold
    Registriert seit
    Apr 2007
    Ort
    Duisburg (NRW)
    Beiträge
    192
    Hallo,

    das ist doch offensichtlich.

    Deine Funktion erwartet als erstes Argument ein char, du bigst ihm aber einen Pointer auf ein 2-Dimensionales char-Array.

    Deine Deklaration muss so aussehen :

    Code :
    1
    2
    3
    4
    5
    
        void testArray(char (*feld)[80] , int len) {    {
     
        //einfache und foramtierte Ausgabe des array's
        // Hier kannst du mit feld arbeiten wie in der aufrufenden Funktion !"
        }

    Viel Erfolg weiterhin,

    Peter
     
    Der Computer wird das tun, was du programmierst - nicht das, was du willst ;-)

  6. #6
    Avatar von Meccan
    Meccan Meccan ist offline Mitglied Brokat
    Registriert seit
    Jan 2005
    Ort
    Wiesbaden
    Beiträge
    252
    und noch einmal vielen dank
     

  7. #7
    Avatar von pschilling
    pschilling pschilling ist offline Mitglied Gold
    Registriert seit
    Apr 2007
    Ort
    Duisburg (NRW)
    Beiträge
    192
    Keine Ursache.

    Vergiss bitte nicht, deinen Beitrag zu schließen.

    Peter
     
    Der Computer wird das tun, was du programmierst - nicht das, was du willst ;-)

  8. #8
    Avatar von Meccan
    Meccan Meccan ist offline Mitglied Brokat
    Registriert seit
    Jan 2005
    Ort
    Wiesbaden
    Beiträge
    252
    ja werde daran denke aber glaub ich hab in den nächsten paar Minuten
    noch Fragen. Deswegen lass ich den Beitrag offen.

    mfg meccan
     

  9. #9
    Avatar von the incredible Leitman
    the incredible Leitman the incredible Leitman ist offline Mitglied Brokat
    Registriert seit
    Jul 2006
    Ort
    ÖSTERREICH
    Beiträge
    406
    Zitat Zitat von Meccan Beitrag anzeigen
    ja werde daran denke aber glaub ich hab in den nächsten paar Minuten noch Fragen. Deswegen lass ich den Beitrag offen.
    Ich denke, nun kannst du ihn aber schließen, oder?
     
    Meine Blogs:
    theIncredibleLeitman.blogspot.com // Tec
    Gamesdev.de // Gamedevelop

    Ein echter Programmierer hat nur natürliche 3 Feinde:
    • Sonnenlicht
    • Frischluft
    • und das unerträgliche Gebrüll der Vögel
    Ownage
    steht für die Fähigkeit einer Person, andere zu ownen, zum Beispiel „Ich habe die totale ownage.“ Gleichzeitig kann es aber auch die positive Qualität einer Sache beschreiben: „Counterstrike owns!“
    (siehe:http://de.wikipedia.org/wiki/Computerspieler-Jargon)

  10. #10
    puitl puitl ist offline Rookie
    Registriert seit
    Apr 2008
    Beiträge
    8
    Hallo!
    Ich bin noch C-Anfänger und habe ein Problem mit der Parameterübergabe von Feldern.
    Meine Grund-Idee sieht so aus:
    #include <stdio.h>
    #include <conio.h>

    char funktion()
    {
    char f[3];

    f[0]='A';
    f[1]='B';
    f[2]='C';

    return f;
    }

    void main()
    {
    int i=0;
    char g[3];

    g=funktion();

    for(i=0;i<3;i++)
    printf("%c",g[i]);
    }

    Was muss ich verändern damit das Feld g mit den Werten von Feld f gefüllt wird?

    Danke
    Mfg Leo
     

  11. #11
    Avatar von the incredible Leitman
    the incredible Leitman the incredible Leitman ist offline Mitglied Brokat
    Registriert seit
    Jul 2006
    Ort
    ÖSTERREICH
    Beiträge
    406
    prinzipiell ok würd ich sagen... hab im Moment keinen Compiler bei der Hand,
    kann das also nicht ausführen und testen

    ein array von char würdest du (glaub ich) folgendermaßen deklarieren:
    Code cpp:
    1
    
    array<Typ>(Länge)
    also in diesem Fall
    Code cpp:
    1
    
    array<char>(3)

    Außerdem kannst du die Laufvariable "i" auch erst in der Schleife deklarieren,
    sowie die Länge als Länge des Arrays:
    Code cpp:
    1
    
    int i = 0; i < g.Length; ++i)

    Was genau ist denn dein Problem?
    Kompiliert das Ganze nicht? Oder bekommst du nur keine Ausgabe?
     
    Meine Blogs:
    theIncredibleLeitman.blogspot.com // Tec
    Gamesdev.de // Gamedevelop

    Ein echter Programmierer hat nur natürliche 3 Feinde:
    • Sonnenlicht
    • Frischluft
    • und das unerträgliche Gebrüll der Vögel
    Ownage
    steht für die Fähigkeit einer Person, andere zu ownen, zum Beispiel „Ich habe die totale ownage.“ Gleichzeitig kann es aber auch die positive Qualität einer Sache beschreiben: „Counterstrike owns!“
    (siehe:http://de.wikipedia.org/wiki/Computerspieler-Jargon)

  12. #12
    puitl puitl ist offline Rookie
    Registriert seit
    Apr 2008
    Beiträge
    8
    Hallo!

    Also wenn ich es so lasse dann kommen folgende Felermeldungen:
    1) warning C4047: 'return' : 'char ' differs in levels of indirection from 'char [3]'
    2) warning C4172: returning address of local variable or temporary
    3) warning C4047: '=' : 'char [3]' differs in levels of indirection from 'char '
    4) error C2106: '=' : left operand must be l-value

    1) und 2) zeigen auf die Zeile mit "return f;" und die anderen zwei auf die Zeile mit "g=funktion();"

    also bis jetzt habe ich es nur so gelernt ein Feld mit dem Datentyp char zu deklarieren:
    char name[größe];

    Muss ich nicht "irgendwas" mit dem strcpy machen?

    Danke
    Mfg Leo
     

  13. #13
    Avatar von the incredible Leitman
    the incredible Leitman the incredible Leitman ist offline Mitglied Brokat
    Registriert seit
    Jul 2006
    Ort
    ÖSTERREICH
    Beiträge
    406
    Zitat Zitat von puitl Beitrag anzeigen
    Muss ich nicht "irgendwas" mit dem strcpy machen?
    denke nicht o.O

    Aber ein Char definiert ein (1) Zeichen!
    Um mehrere Zeichen zu verwenden, musst du einen String, oder eben ein Array von Chars benutzen.
    Dann kommt als Rückgabewert in deiner Methode eben anstelle eines normalen chars ein "array<char>"

    Außerdem verwendest du in C++ Zeiger!
     
    Meine Blogs:
    theIncredibleLeitman.blogspot.com // Tec
    Gamesdev.de // Gamedevelop

    Ein echter Programmierer hat nur natürliche 3 Feinde:
    • Sonnenlicht
    • Frischluft
    • und das unerträgliche Gebrüll der Vögel
    Ownage
    steht für die Fähigkeit einer Person, andere zu ownen, zum Beispiel „Ich habe die totale ownage.“ Gleichzeitig kann es aber auch die positive Qualität einer Sache beschreiben: „Counterstrike owns!“
    (siehe:http://de.wikipedia.org/wiki/Computerspieler-Jargon)

  14. #14
    puitl puitl ist offline Rookie
    Registriert seit
    Apr 2008
    Beiträge
    8
    Sorry, habe vergessen zu sagen das ich C programmiere, C++ kommt erst...

    Bis jetzt habe ich es so gelernt: "datentyp name[größe]" und "char f[5]" ist dann also ein Feld mit 5 gliedern und dem Datentyp char.

    Wenn ich ein Feld wie von dir vorgeschlagen deklariere: array<char>(3)
    wo ist denn hier der Name des Feldes zu bestimmen?

    Was muss ich an meinem Programm noch verändern, damit ich das Feld über return einem anderen Feld zuweisen kann?
    Danke
     

  15. #15
    Avatar von sheel
    sheel sheel ist gerade online Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.500
    Zitat: Außerdem verwendest du in C++ Zeiger
    Pointer sind doch schon in c vertreten
    @puitl: please das nächste mal einen eigenen thread aufmachen
     

Ähnliche Themen

  1. Char array
    Von $$Money$$ im Forum Java
    Antworten: 7
    Letzter Beitrag: 01.03.09, 11:54
  2. array[char]=char?!
    Von thomy800 im Forum Javascript & Ajax
    Antworten: 2
    Letzter Beitrag: 06.11.07, 18:09
  3. Char Array nach char umwandeln
    Von ProgFreak im Forum C/C++
    Antworten: 11
    Letzter Beitrag: 01.06.07, 02:00
  4. char mit 2D-array
    Von Mickeyman im Forum C/C++
    Antworten: 7
    Letzter Beitrag: 27.03.06, 11:10
  5. Probleme mit char-Array
    Von lindin im Forum C/C++
    Antworten: 3
    Letzter Beitrag: 13.09.04, 13:53