Wenn ich meinen Code unten ausführen. Es wartet auf meine Eingabe zur Eingabe eines Dateinamens. Aber ich warte nicht auf die Eingabe eines Dateinamens, sondern überspringe ihn einfach in den _getch() -Teil. Ich kann keinen Satz hinzufügen.Konsole wartet nicht auf Eingabe. (C-Sprache)
-Code nicht funktioniert:
#include <stdio.h>
main() {
FILE *fp;
char fnamer[100] = ""; //Storing File Path/Name of Image to Display
printf("\n\nPlease Enter the Full Path of the Image file you want to view: \n");
scanf("%s", &fnamer);
fp = fopen(fnamer, "w");
if (fp == NULL)
{
printf("\n%s\" File NOT FOUND!", fnamer);
}
char c[1000];
printf("Enter a sentence:\n");
gets(c);
fprintf(fp, "%s", c);
fclose(fp);
_getch();
}
-Code, das funktioniert und wartet auf einen Satz eingeben:
#include <stdio.h>
#include <stdlib.h> /* For exit() function */
int main()
{
char c[1000];
FILE *fptr;
fptr = fopen("program.txt", "w");
if (fptr == NULL){
printf("Error!");
exit(1);
}
printf("Enter a sentence:\n");
gets(c);
fprintf(fptr, "%s", c);
fclose(fptr);
return 0;
}
Beide sind so ähnlich, genau dort am Ende für die Eingabeaufforderung für einen Satz zu fragen. Es macht keinen Sinn.
gebaut Wahrscheinlich nicht verwandt, aber das Ampersand entfernen: 'scanf ("% s", & fnamer);' -> 'scanf ("% s ", fname);' –
[warum-ist-die-bekommt-Funktion-so-gefährlich-dass-es-sollte-nicht-benutzt werden] (http://stackoverflow.com/questions/1694036/why-is -die-bekommt-Funktion-so-gefährlich-dass-es-sollte-nicht-benutzt werden) – LPs
'scanf' ist kompliziert zu verwenden und nutzlos, wenn die Eingabe nicht mit der scanf-Formatzeichenfolge übereinstimmt. Verwenden Sie lieber 'fgets'. –