Seite 2 von 2

Re: Programm erzeugt keine Datei

Verfasst: Fr Mai 22, 2020 7:15 pm
von Xin
pratio hat geschrieben:
Fr Mai 22, 2020 5:30 pm
Ich hätte noch eine kleinere weitere Frage, wenn es ok ist. Und zwar würde ich gerne den Namen der Datei auch über die Konsole eingeben können. Überlegt habe ich mir folgendes:

Code: Alles auswählen

int main(int argc, char** argv[])
{
	FILE* fp;
	char filename[] = argv[1];
	char mode[] = "w";
	fp = fopen(filename, mode);

	if (fp == NULL)
		printf("error creating file: %s\n", strerror(errno));
	else
		printf("file created successfully\n");

	fprintf(fp,"please write this: hallo");
	fclose(fp);
}
Die Übergabe an das filename funktioniert aber nicht und ich weiß nicht, wie ich das argv[1] an das filiname[] richtig übergebe
Gar nicht. argv[1] ist ein Pointer, filename ist ein Array, was sich zur Compilezeit(!) entscheiden muss, wie groß es ist. Das ist über die [] so definiert.
Nun weiß man aber nicht, wie lang der Text ist, auf den argv[1] zeigt.

Wenn Du später fopen() rufst, erwartet fopen einen Pointer als erstes Argument. Das Array übergibt also den Pointer auf das erste Element, also den ersten Buchstaben. Das ist das gleiche wie das, was in argv[1] steht. Also arbeite durchgehend mit Pointern:

Code: Alles auswählen

char * filename = argv[1]
Und die Codeflags kannst Du oben einschalten indem Du auf das </> Symbol drückst. ^^

Re: Programm erzeugt keine Datei

Verfasst: Di Dez 01, 2020 7:14 pm
von jomaber
/*
int main(int argc, char** argv)
oder
*/
int main(int argc, char* argv[])
{
/* statt int main(int argc,char** argv[]);

wenn es überhaupt noch von Interesse sein sollte
*/
}