Originally Posted by
peterchen
try %[^\n] instead of %s
scanf("%s", char_array_name);
stores the characters from stdin into char_array_name until white space is encountered.
scanf("%[^\n]", char_array_name);
stores the characters from stdin into char_array_name until newline is encountered.
This also doesn't seem to work, still the same problem.
Here's my entire code.
Code:
struct vragen { /* setup vraag structure */
char vraag[MAXVRAAG];
char antw[MAXANTW];
char antw1[MAXANTW];
char keuze[2];
};
Code:
void addvraag()
{
struct vragen libry[MAXX]; /* array van structures > vragen.libry >> libry.vraag */
int count = 0;
int index, filecount;
int size = sizeof (struct vragen);
int welk;
FILE * vragen;
filecount = count;
if ((vragen = fopen("vragen.txt", "a+")) == NULL)
{
fputs("Kan vragen.txt niet openen!\n",stderr);
exit(1);
}
rewind(vragen);
if (count == MAXX)
{
fputs("Het bestand met vragen is vol!", stderr); /* max v define */
exit(2);
}
puts("Voeg nieuwe vraag toe.");
puts("Druk [enter] bij een nieuwe lijn als je alle vragen hebt toegevoegd.");
while (count < MAXX && gets(libry[count].vraag) != NULL && libry[count].vraag[0] != '\0')
{
puts("Typ het eerste antwoord.");
scanf("%[^\n]", libry[count].antw);
puts("Typ het tweede antwoord.");
scanf("%[^\n]", libry[count].antw1);
puts("Geef het juiste antwoord (A of B)");
scanf("%[^\n]", libry[count++].keuze);
while (getchar() != '\n') /* kijken naar ENTER */
continue; /* vrijmaken input line */
if (count < MAXX)
puts("Typ uw volgende vraag.");
}
for (index = 0; index < count; index++)
{
printf("Vraag: %s \n [A] %s \n [B] %s \n [JUISTE ANTWOORD]: %s\n",libry[index].vraag,libry[index].antw, libry[index].antw1, libry[index].keuze);
}
fwrite(&libry[filecount], size, count - filecount, vragen);
fclose(vragen);
}