Leerzeichen Problem!

Yellow

Yellow

Doppel-As
Hi Leute!

Ich habe eine Datei die Folgend aussieht:

27 83 12 89 1 0 22 38 92
69 82 7 3 39 76 97 65 98

nun möchte ich gerne diese Datei auslesen. Ist kein Problem. Doch jetzt sitze ich da und möchte das folgendermaßen ausgeben:

x
x
x
x
x
x

PHP:
for(i=0;fgets(c,2048,fz);i++) {

      if(c==" ") {
            printf("\n");
      }

      fputs(c,stdout);
}

Doch irgendwie ignoriert der die Leerzeichen in der Abfrage und gibt die Komplette eingelesene Datei aus.

Woran könnte das liegen? Kann ich Leerzeichen nicht mit
PHP:
if(c==" ") {

abfragen?

Irgendwie schecke ich das heute nicht!
 
Hallo schau dir mal folgendes an:

Code:
#include <stdio.h>

int main( )
{
  FILE *file;
  char c;
  int i;

  file = fopen( "test.txt", "r" );

  for( i=0; !feof(file); i++ )
  {
    c = fgetc(file);

    if ( c == ' ' )
    {
      printf("\n");
    }
    else
    {
      putc(c, stdout );
    }
  }  
}


Hoffe das kann dir weiterhelfen!
Alex
 
Nun ja, erst einmal würde ich ganz gerne wissen, wie genau du es meinst.
Das Format
"27 83 12 89 1 0 22 38 92
69 82 7 3 39 76 97 65 98"
lässt ihmo ein paar Fragen übrig.
Sind es immer nur zwei Zeilen die sozusagen bis index-n weitergehen
oder gehen sie in beide Richtungen weiter?
Willst du es zeilenweise ausgeben oder reihenweise?

Nun zum Code:
Man sollte stets sehr vorsichtig mit Vergleichsoperationen/-operatoren sein.
Und Strings mit "==" vergleichen sollte man am besten gleich lassen, imo.
Dafür gibt es Funktionen wie strcmp(), strncmp() und andere (z.B. die einen String darauf prüfen, ob ein anderer darin vorkommt, usw.)

Du liest einen Buffer der Größe 2048 ein, der hat nun dementsprechend viele andere Zeichen. Wenn du nun diesen, doch recht großen String mit " " vergleichst, dann wird es wohl kaum eine wahre Aussage geben :)
Du solltest die Methode meines Vorredners ausprobieren: fgetc() - Damit prüfst du, wie du dir vielleicht denken kannst, einzelne Zeichen ;)

Könntest auch alles elegant mit strtok lösen.
(Bin gerade leider zu müde, um irgendwas Standfestes zu schreiben, vielleicht komme ich morgen dazu).

MfG, dietox
 
Zuletzt bearbeitet:
Du koenntest die Datei auch direkt in ein integer-Arrayeinlesen, sofern es nur Zahlen enthaelt. Dann muesstest Du Dich nicht selbst ums Parsen kuemmern:
Code:
FILE* fp;
int idx = 0;
int maxZahlen=2048;
fp.open("meine_Daten");
int zahlen[2048];
while(fp != eof && idx < 2048)
{
  fscanf(fp, "%d", &(zahlen[idx]));
  ++idx;
}
 
Guten Morgen Leute!

Danke erstmal für die bisherigen Antworten.

@skopionmaster: Danke für deinen Syntax. Werde den mir zuhause mal genauer anschauen und überlegen was ich daraus lernen kann ;)

@Rikola: Auch dir erstmal danke für die Mühen ;)

@Dietox: Die Zahlen sind Zufallszahlen von 0 bis 100. Diese werden in dem Format

27 83 12 89 1 0 22 38 92
69 82 7 3 39 76 97 65 98

... in eine Datei geschrieben und so ausgelesen. Mein Ziel ist es diese Zahlen so

27
83
12
89
1
0
22
38
92
....

...in ein Array zu speichern und diese dann so auszugeben! Es muß dabei nich von klein auf groß sein.

Ich habe einfach meine Probleme irgendwie damit die Leerzeichen zu killen und daraus ein '\n' zu machen.

Normalerweise ist das für mich auch kein Problem... doch denke ich in letzter Zeit immer zu kompliziert :D

(Hier mal meinen bis jetzt geschriebener Code :) )
PHP:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(int argc, char **argv) {
	FILE *fz;
	char c[2048];
	int i,w[100][100],o[100];


	// DATEI ÖFFNEN!
	if((fz=fopen("zahlen.txt","r")) == NULL) {
		fprintf(stderr,"I/O Fehler: Konnte Datei nicht finden bsw öffnen!\n");
		exit(1);
	}


	// w (Wert) Teil initialisiren!
	for(i=0;i<101;i++) {
		w[i][0]=i;
		printf("w[%i]=%i\n",w[i][0],w[i][0]);
	}


	// Datei ausgeben und in einer Variable sichern!
	for(i=0;fgets(c,2048,fz);i++) {
		
		o[i] = atoi(c);
		printf("%i\n",o[i]);
		
		
	}

	return 0;
}
 

Ähnliche Themen

Zugriff Ubuntu 16.04. auf Freigabe 18.04. LTS nicht möglich

NagiosGrapher 1.7.1 funktioniert nicht

awk skript: Probleme mit if und else Anweisungen

Ubuntu X / dbus problem

Statistikprogramm R

Zurück
Oben