D
Neuling2000 schrieb:
Wenn ich jedoch in die Funktion tausch() die printf- und scanf-Zeile übernehme und im Hauptprogramm dafür weglasse, funktioniert dies nicht mehr.
Bitte immer Minimalbeispiele machen, dann werden deine Beiträge kürzer und die Lust, sie zu beantworten steigt signifikant an.
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <conio.h>
#define OEFFNEN fp=fopen("datei.txt", "r");
#define SCHLIESSEN fclose(fp);
Sowas ist häßlich.
main()
int main()
while(!feof(fp))
{
fscanf(fp, "%s", &wort[0]);
i++;
}
http://www-info2.informatik.uni-wuerzburg.de/dclc-faq/kap11.htm (11.5 speziell, aber auch den Rest). Bitte feof nur verwenden, wenn man weiß, was man tut.
Außerdem liest Du mit fscanf char* ein.
Üblicher Anwendungsfall ist: "char *s = malloc(...); scanf("%s", s);"
Also sollte das hier besser wort[0] statt &wort[0] heißen. Vermutlich macht das aber keine Probleme, aber es verwirrt.
if (strcmp(answ, "J")==0 || strcmp(answ, "j")==0)
{
tausch(&wort[j-1]);
}
Du willst einen 'char*' übergeben, wort ist 'char [x][y]'. Also solltest Du "tausch(wort[j-1])" schreiben.
Es gibt noch so andere Holprigkeiten im Programm (einlesen mit scanf ohne Längenprüfung o.ä.) aber für den Hausgebrauch mag das okay sein. Warum öffnesst Du die Datei denn zweimal? Du kannst auch einfach
"while (fscanf(f, "%s", wort[i++]) != EOF);" oder so schreiben.