Probleme beim Öffnen eines Datenstroms
-
Hey, bin neu hier und muss direkt mal eine Frage los werden
...
Ich will ein Programm schreiben, was mir die anzahl der Wörter in einer txt Datei zählt. Dafür habe ich folgenden code geschrieben:#include <stdio.h>
#include <stdlib.h>int main(void)
{
int zaehler=0;
FILE* daten;if((daten=fopen("kundendaten.txt", "r"))==NULL)
{
printf("datei konnte nicht geöffnet werden");
return 0;
}while(fscanf(daten, "%s")!=EOF)
{
zaehler++;
}Leider bricht das programm immer beim fscanf ab und gibt eine Zugriffsverletzung an. Wenn ich den debugger drüberlaufen lasse steht beim fopen schon, dass der Speicher nicht gelesen werden kann also denke ich, dass er die Datei garnicht erst öffnen kann. komisch nur dass er dann nicht in die If bedingung reingeht... die Datei liegt auch im Verzeichniss der c Datei. Weiß echt nichtmehr weiter... Weiß von euch jemand woran das liegt?!?
-
Wenn Du Code ins Forum postest, benutz bitte "Code Tags" - Code markieren und "C" direkt unter dem
Dingsbums klicken. (Kannst Du auch im nachhinein reineditieren...)
fscanf
liest aus dem stream und speichert auch irgendwo. Wenn du also einen string ("%s") liest, musst Du einenchar*
auf einen Speicherbereich übergeben, der groß genug ist:char buf[21]; // 20 Zeichen und '\0' am Ende fscanf(file, "%20s", buf); // max 20 Zeichen in Puffer buf einlesen // usw.
Da Du aber gar nix speichern willst, kannst Du das speichern auch unterdrücken, mit einem '*':
fscanf(file, "%*s"); // speichert nix, braucht auch keinen Zeiger
-
Der ansatz mit dem * Funktioniert :)... haben wir leider nicht besprochen in der Vorlesung
Danke für die Hilfe.
Füge nächstes mal den code dann ein wie du beschrieben hast