ooalbert
Goto Top

Ansi-C, Textdatei auslesen und chars zusamenfügen?

Hi,

ich komm eigentlich von der Javaschiene und kenn C nicht wirklich aber ich benötige für eine Aufgabe etwas Compiliertes.


Es geht darum, eine TXT zeichenweise auszulesen und dann in einen String zu füllen. Das ganze soll dann ausgegeben werden wenn eine Zeile beendet ist. Da C ja keine Strings beherscht muß man das ja alles über diese Char-Arrays mühsam zusammenkleben.


Jedoch scheint das nicht so zu klappen wie gedacht. In der refference stand das strcat Chars aneinanderkleben kann, bzw. einen Char-Array mit chars auffüllt. Trotzdem meckert der Compiler das die Strcat-anweisung nicht korrekt wäre.


#include <stdio.h> 
#include <stdlib.h> 
#include <conio.h> 
#include <string.h> 

main(void) 
{ 
FILE *datei; 

datei = fopen("123.txt", "r");   
if(NULL != datei) { 
      printf("Konnte Datei öffnen!\n");   
   } 

char a; 
char b[100]; 
  
while ( a != EOF ) 
{ 
      a=fgetc(datei); 
      strcat(b[100], a); 
      
      if (a == '\n')   
      {       
       printf("%s", b);   
      } 
} 
return 0; 
} 

Content-Key: 63399

Url: https://administrator.de/contentid/63399

Printed on: April 19, 2024 at 20:04 o'clock

Member: VoSp
VoSp Jul 10, 2007 at 06:23:32 (UTC)
Goto Top
Hallo,

probiers mal mit

strcat(b, a);

Bis dann

VoSp
Member: ooAlbert
ooAlbert Jul 10, 2007 at 11:38:24 (UTC)
Goto Top
nein das bringt nicht, es bleibt bei der fehlermeldung ... also ich bin nir nicht sicher aber kann es sein das man statt der variable einen pointer der auf die variable zeigt verwenden muß? Kann ja sein das diese funktion so beschränkz ist, das die nur die speicheradressen zusammenfügen kann.

Ansonsten würde mir nur noch einfallen den chararray wie jeden normalen array mit indize ablaufen zu lassen und dann an jeder stelle den neuen char einzufügen. Wovon ich glaubte das sowas strcat macht.
Member: VoSp
VoSp Jul 10, 2007 at 11:48:59 (UTC)
Goto Top
Tach,

also ich habe das gerade mal ausprobiert, das hier sollte funktionieren:
#include <stdio.h>
#include <string.h>

int main (void)
{

  char string[80];

  strcpy (string,"Das ");  

  strcat (string,"ist ");  
  strcat (string,"ein ");  
  strcat (string,"Test.");  

  puts (string);

  return 0;

}
Das funktioniert so. Versuch doch mal den String mittels strcpy erstmal zu "initialisieren".

Bis dann
VoSp
Member: Guenni
Guenni Jul 11, 2007 at 16:03:06 (UTC)
Goto Top
@ooAlbert

Hi,

Strcat funktioniert nur mit strings.

Außerdem versuchst du mit ...
...
strcat(b[100], a);
...
... jedesmal das gelesene Zeichen in das hundertste
Element eines Arrays einzulesen.

Du mußt schon einen Zähler mitführen, in welchen Element
die gelesene Zeile eingefügt werden soll.

#include "stdafx.h" 
#include <stdio.h> 
#include <stdlib.h> 
#include <conio.h> 
#include <string.h> 


int main(void) 
{ 
FILE *datei; 

datei = fopen("c:\\123.txt", "r");   
int i=0; 
char b[100]; 
  
while (!feof(datei)){ 
      b[i]=fgetc(datei);
	  i++;
} 
b[i]='\0';  
printf("%s",b);  
fclose(datei);
return 0; 
}

Gruß
Günni

PS.:

Da C ja keine Strings beherscht muß man das ja alles über diese
Char-Arrays mühsam zusammenkleben.

C kann sehr wohl mit strings umgehen:

char *s;

Allerdings muß man für *char s eine Speicherresevierung vornehmen
Member: lowbyte1
lowbyte1 Aug 15, 2007 at 05:45:34 (UTC)
Goto Top
das zeigt mir wider mal, das man nichts behaupten sollte wen man es selber nicht weis...


(es gibt nur eins 0 or 1) [lowbyte]