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.pratio hat geschrieben: ↑Fr Mai 22, 2020 5:30 pmIch 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:Die Übergabe an das filename funktioniert aber nicht und ich weiß nicht, wie ich das argv[1] an das filiname[] richtig übergebeCode: 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); }
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]