Wie erstellt man ein Array von Strings in C? [Duplikat]

7

Ich lehre mich C von einem Buch und ich versuche ein Kreuzworträtsel zu erstellen. Ich muss eine Reihe von Strings erstellen, aber immer wieder Probleme bekommen. Außerdem weiß ich nicht viel über Array ...

Dies ist das Stück des Codes:

%Vor%

Aber ich bekomme immer die Nachricht:

%Vor%

Nicht sicher, was das Problem ist ... Ich habe versucht zu sehen, wie man ein Array von Strings erstellt, aber ohne Glück

Jede Hilfe wird sehr geschätzt,

Sam

    
Wobblester 01.03.2013, 15:59
quelle

4 Antworten

12
%Vor%

word_array[0] ist ein char , während word1 ein char * ist. Dein Charakter kann keine Adresse halten.

Ein Array von Strings könnte so aussehen:

%Vor%

Wenn Sie lieber ein Array von Zeigern zu Ihren Strings haben möchten:

%Vor%

Und dann:

%Vor%

Vielleicht sollten Sie das lesen.

    
md5 01.03.2013, 16:01
quelle
7

Die Deklaration

%Vor%

erstellt ein Array aus drei Zeichen . Sie scheinen ein Array von Zeichen Zeigern deklarieren zu wollen:

%Vor%

Sie haben jedoch ein ernsthafteres Problem. Die Deklaration

%Vor%

erstellt ein Array von sechs Zeichen, aber Sie sagen ihm tatsächlich, dass es sieben Zeichen hat. Alle Zeichenfolgen haben ein zusätzliches Zeichen, '%code%' , mit dem das Ende der Zeichenfolge angegeben wird.

Deklarieren Sie das Array auf Größe sieben:

%Vor%

oder lassen Sie die Größe, und der Compiler wird es selbst herausfinden:

%Vor%     
Some programmer dude 01.03.2013 16:02
quelle
5

Wenn Sie ein Array von Zeichenfolgen benötigen. Es gibt zwei Möglichkeiten:

1. Zweidimensionales Array von Zeichen

In diesem Fall müssen Sie vorher die Größe Ihrer Saiten kennen. Es sieht wie folgt aus:

%Vor%

2. Ein Array von Zeichenzeigern

Es sieht wie folgt aus:

%Vor%     
Jay 01.03.2013 16:03
quelle
4

Sie können malloc() auch verwenden, um Speicher manuell zuzuweisen:

%Vor%

Wenn Sie nicht wissen (zur Codierungszeit), wie viele Strings sich in einem Array befinden und wie lang sie sein werden, ist dies ein guter Weg. Aber du musst den Speicher freigeben, wenn er nicht mehr benutzt wird (rufe free() auf).

    
kamituel 01.03.2013 16:08
quelle

Tags und Links