Ich habe gerade ein einfaches Programm in C versucht, Einfügen in ein Array. Ich habe eine scanf
Funktion verwendet, um Zeichen zu akzeptieren, aber es scheint, dass der Compiler das einfach übersprungen hat und einfach zum Ende des Programms gegangen ist. Diese war der Code, die ich verwendet: -scanf Funktion funktioniert nicht mit Zeichen
#include <stdio.h>
void main()
{
int a[50], i, j, m, n, x;
char ch;
printf("Enter the no. elements of the array :- ");
scanf("%d", &m);
printf("Enter the elements below :- ");
for (i = 0; i < m; i++)
{
scanf("%d", &a[i]);
}
printf("The array is :- \n");
for (i = 0; i < m; i++)
{
printf("%d", a[i]);
}
printf("\nDo you want to enter an element ? (Y/N)\n");
scanf("%c", &ch); // The compiler just skips this along with the
while (ch == 'y' || ch == 'Y') // while loop and goes straight to the printf
{ // statement
printf("The index of the element :- ");
scanf("%d", &n);
printf("\nEnter a number :- ");
scanf("%d", &x);
for (i = m; i > n; i--)
{
a[i] = a[i - 1];
}
a[n] = x;
printf("\nInsert more numbers ? (Y/N)");
scanf("%c", &ch);
m = m + 1;
}
printf("\nThe array is :- ");
for (i = 0; i < m; i++)
{
printf("%d", a[i]);
}
}
verwendete ich die variable ch
, um dem Benutzer zu ermöglichen, eine Wahl zu haben, ob oder ob nicht auf Elemente einzufügen d.h. Y
oder N
.
Aber der Compiler überspringt grundsätzlich die dritte scanf
Funktion, die, die die char
akzeptiert, zusammen mit der while
Schleife.
Ich möchte nur wissen, warum die scanf
Funktion übersprungen wurde?
Ändern Sie 'scanf ("% c ", &ch);' in 'scanf ("% c ", &ch);'), um den im Puffer verbliebenen Zeilenumbruch zu verwenden. Im Gegensatz zu anderen Formaten überspringt '% c' Leerzeichen im Eingabepuffer nicht automatisch. –
Mögliches Duplikat von [Scanf Skip scanning character] (http://stackoverflow.com/questions/36281871/scanf-skip-scanning-character) – EOF
.... und bitte poste gut eingerückt code ... – LPs