Aus Datei lesen - problem
-
Du wirst es zwar nicht gerne hören, aber Integer-Variablen speichern keinen Text! Probiers mal so:
char verb[2][10][30];
Die 30 stellt dabei die (maximale) Länge eines Verbs (inkl. '\0') dar.
Die Verb-Puffer-Zuweisung ist auch nicht korrekt, zumindest nicht, wenn's um Zeichenketten geht. Dafür gibt's strcpy.
strcpy (verb[1][i], puffer);
Edit: Das Sternchen bei Puffer brauchst du nicht.
-
sobald ich "char verb..." deklarier gibt es problemnachricht senden weil er die zuweisung von verb = puffer bzw. strcpy nicht schafft
pls probiert es/probier es mal mit meinen code und strcpy und so..es wird nicht funktionieren glaube mir
-
B4stl3r schrieb:
ach...es geht noch immer nich...
kann so auch nicht gehen.
du überschreibst dir die eingelesenen werte:while(fgets(puffer,sizeof(puffer),datei)){ verb[1][i] = puffer;
jedes verb[1][i] bekommt die gleiche adresse, deren inhalt immer neu überschrieben wird.
abhilfe: du brauchst für jedes stück text einen eigenen speicherbereich.
wozu willst du eigentlich die adressen in einem unsigned int array speichern?
lass die doch gleich im char* array drin.
-
B4stl3r schrieb:
sobald ich "char verb..." deklarier gibt es problemnachricht senden weil er die zuweisung von verb = puffer bzw. strcpy nicht schafft
pls probiert es/probier es mal mit meinen code und strcpy und so..es wird nicht funktionieren glaube mir
Poste doch bitte mal den neuen Code (mit strcpy etc.), mit dem es nicht funktioniert. Bei mir geht's nämlich ohne Probleme.
-
also hab den "unsigned int verb..." in "char* " umgebessert wie empfohlen
hab auch strcpy jz reingepackt und wie es wieder mal so ist..geht NIX
ich will ja nich den "puffer" in den ganzen "verb" sondern in "verb[1][i]" rein und das geht nich ganz mit strcpy oder?naja hier der code...bei mir ist "problemnachricht" und 2 warnungen wegen "fgets" und "strcpy" wegen incompatible pointer type
#include <stdio.h>
#define MAX 500int main() {
FILE* datei;
char* verb[2][10]={0};
char* puffer[30];
int i=0;datei=fopen("1.txt", "r");
while(fgets(puffer,sizeof(puffer),datei)){
strcpy(verb[1][i],puffer);
i++;
}
printf("%s", puffer);
printf("%s", verb[1][0]);return 0;
}bitte jz diesen code so ummogln dass das jz geht..ihr wärt echt ein schatz! ^^
-
Du solltest Dir die Beiträge mal ganz durchlesen und die Sachen richtig in die Tat umsetzen. So schwer ist das wirklich nicht.
... char verb[2][10][30]; char puffer[30]; ...
Das funktioniert ohne Warnung(en)!
-
ähm..wie gesagt..ES GEHT NICHT!!
bitte vorher mit meinem code probieren ob das geht was ihr da an code futzeln schreibt...
außerdem strcpy geht sowieso nich weil ich in mehrdimensionales array schreiben will und strcpy akzeptiert nur normale chars und keine mehrdimensionalen wiestrcpy(verb[1][i],puffer);
da sschmiert das programm ab und mit
strcpy(verb,puffer);
kann ich nich weil da es nich in den einzelnen "dimensionen" gespeichert wird
hier nochmal DER code der einfach nicht geht bzw. in "verb[1][i]" falsches drinsteht
#include <stdio.h>
#define MAX 500int main() {
FILE* datei;
char verb[2][10]={0};
char puffer[30];
int i=0;datei=fopen("1.txt", "r");
while(fgets(puffer,sizeof(puffer),datei)){
strcpy(verb[1][i],puffer);
i++;
}printf("%s", puffer);
printf("%s", verb[1][0]);return 0;
}
-
#include <stdio.h> #define ANZAHL 500 #define LAENGE 40 int main() { FILE* datei; char verb[ANZAHL][LAENGE]={0}; char puffer[30]; int i=0; datei=fopen("1.txt", "r"); while(fgets(puffer,sizeof(puffer),datei)){ strcpy(verb[i],puffer); i++; } printf("%s\n", puffer); printf("%s", verb[1]); return 0; }
-
B4stl3r schrieb:
ähm..wie gesagt..ES GEHT NICHT!!
Tut's doch, du Held! Mach doch einfach bei der Deklaration verb 3-dimensional:
char verb [2][10][30];
Du wolltest (lt. eines deiner Postings) unbedingt ein 3-dim-Array, deklarierst es aber jedes Mal 2-dimensional. Kein Wunder, dass es dann nicht klappt.
B4stl3r schrieb:
#include <stdio.h> #define MAX 500 int main() { FILE* datei; char verb[2][10]={0}; char puffer[30]; int i=0; datei=fopen("1.txt", "r"); while(fgets(puffer,sizeof(puffer),datei)){ strcpy(verb[1][i],puffer); i++; } printf("%s", puffer); printf("%s", verb[1][0]); return 0; }
Die 6. Zeile musst du ändern!
-
ok..danke für die hilfe ^^
2 dimensional funktioniert perfekt doch das hier geht shcon wieder nich xD
sobald es 3 dimensional wird, schmierts wegen "strcpy" ab..
sagt "inco.. pointer types"#include <stdio.h>
#define MAX 500
#define ANZAHL 3
#define ZEILEN 10
#define SPALTEN 100int main() {
FILE* datei;
char verb [ANZAHL][ZEILEN][SPALTEN];
char puffer[30];
int i=0;datei=fopen("1.txt", "r");
while(fgets(puffer,sizeof(puffer),datei)){
strcpy(verb[1][1][i],puffer);
i++;
}printf("%s", puffer);
printf("%s", verb[1][1][0]);return 0;
}
-
B4stl3r schrieb:
aber nja...komplizierte geschichte..hab auch stappeln von papier gebraucht und meine idee zu schaffen -> von einem sprechenden computerbot
ich weis...mit meinem wissensstand und so ist das ziemlich schwer und geht anders sicher leichter...aber ich hab bereits alles am papier stehn und so mach ich das jz ^^Ist nicht kompliziert, wenn man die Datenstruktur einfach hält.
So könnte man z.B. die Konjugationsformen von Verben in einer
Datei speichern:Verb gehen Präsens gehe gehst geht gehen geht gehen Imperfekt ging gingst ging gingen gingt gingen ... Verb schnarchen Präsens schnarche ... ...
So einfach könnte die Struktur für dein Programm aussehen:
struct Verb { char* Infinitiv; char* Praesens[6]; char* Imperfekt[6]; // ... };
MfG
-
oder
verb[0] = alle verben mit ich z.b ."ich gehe" "ich lese"
verb[1] = alle verben mit du z.b ."du gehst" "du liest"
verb[2] = alle verben mit er/sie/es "sie geht" "er liest"
...
..
..usw.
es gibt immer wieder merkmale und dinge die sich in ein paar wörter widerspiegeln usw. die man erst mal herausfinden muss..anstrengend ^^
also passt das schon wie ich das mach..also für mich
-
B4stl3r schrieb:
ok..danke für die hilfe ^^
2 dimensional funktioniert perfekt doch das hier geht shcon wieder nich xD
sobald es 3 dimensional wird, schmierts wegen "strcpy" ab..
sagt "inco.. pointer types"strcpy
undprintf
musst du so lassen, wie sie waren:#include <stdio.h> #include <stdlib.h> #include <string.h> int main () { FILE* datei; char verb[2][10][30]; char puffer[30]; int i = 0; datei = fopen ("1.txt", "r"); while (fgets (puffer, 30, datei)) { strcpy (verb[1][i], puffer); printf("%s", verb[1][i]); i++; } return 0; }
-
strcpy (verb[1][i], puffer);
da wird doch in verb[1][i] ein wort gespeichert doch nicht genau in "verb[1]>[2]<[i]" z.b.
also steht in "verb[1][0]" ein wort und in "verb[1][1]" ein wort aber nichts in "verb[1][2][1]" z.b. da soll ja was drinstehn
-
B4stl3r schrieb:
strcpy (verb[1][i], puffer);
da wird doch in verb[1][i] ein wort gespeichert doch nicht genau in "verb[1]>[2]<[i]" z.b.
also steht in "verb[1][0]" ein wort und in "verb[1][1]" ein wort aber nichts in "verb[1][2][1]" z.b. da soll ja was drinstehn
Dann machs 4-dimensional.
-
omg..das war das problem...4 dimensional dann geht alles xD
aber warum? ich bräuchte ja nur 3 dimensionen..warum muss da ne 4. dimension her dass dies geht?
auf jeden fall..DANKE! danke für die bemühungen und meine nervigen Fragen, antworten usw. DANKE! ihr seit echt die besten. ich kann es nicht oft genug sagen.
DANKEEEEEEEEE!!!!!
-
B4stl3r schrieb:
aber warum? ich bräuchte ja nur 3 dimensionen..warum muss da ne 4. dimension her dass dies geht?
Wenn's nur 3-dimensional wäre, würdest du mit
verb[0][1][2]
nur auf ein einzelnes Zeichen zugreifen, und zwar auf das 3. Zeichen der Zeichenketteverb[0][1]
. Lies Dir doch mal das durch, vielleicht hilfts ja ein wenig
-
monstermunchkin schrieb:
Wenn's nur 3-dimensional wäre, würdest du mit
verb[0][1][2]
nur auf ein einzelnes Zeichen zugreifen, und zwar auf das 3. Zeichen der Zeichenketteverb[0][1]
. Lies Dir doch mal das durch, vielleicht hilfts ja ein wenigdarf ich dich küsssen? xDD
ich verdanke dir echt ALLES! wusste das ja nich...und von euch hats auch keiner erwähnt dass das nicht geht ^^..DANKE!!