Dlaczego przerywa po wprowadzeniu pierwszych znaków?

0

Cześć.

char A[10],B[10];
short n,m;

   scanf("%d",&n);   
   for(i=1; i<=n; i++)
   scanf("%nc",&A[i]);
   
   scanf("%d",&m);
   for(i=1; i<=m; i++)
   scanf("%mc",&B[i]);

Dlaczego po wprowadzeniu znaków w pierwszej pętli już nie chce przejść następnej, tylko automatycznie kończy??

0

co to jest "%nc" i %mc" ?

i co te scanfy mają robić właściwie? pobrać pierwszy znak do tablicy?

0

właściwie powinno być "%c", ale też źle działa :/
Tak znaki mają być zapisywane do tablicy.

0

w pierwszej pętli ma pobrać n znaków do tablicy, a w drugiej m znków, jednk coś kończy działanie po pierwszej pętli... :/

0

spróbuj:

scanf("%d ",&n);  

żeby pobrać biały znak za liczbą

0

po 1: w c/c++ tablice numeruje się od zera, nie od jedynki!
po 2: dla shortów stosuje się %hd, %hu, itd....
po 3: kiedyś już był na forum temat odnośnie scanfa, czyszczenia bufora i dlaczego po jednym scanfie, często nie ma następnych: we wczytywaniu pojedynczego znaku możemy użyć scanf(" %c",&c);

po 4: przydałyby się jakieś printfy, żebyśmy wiedzieli co wpisujemy
po 5: kontrola, aby n i m nie przekroczyły 10, ale to mi się już nie chce.

działający kod:

#include <cstdio>

int main(int argc, char**argv)
{
	char A[10],B[10];
	short n,m;
	int i;

	printf("Podaj n = ") ;
	scanf("%hd",&n);   
	for(i=0; i<n; i++)
		scanf(" %c",&A[i]);

	printf("Podaj m = ") ;
	scanf("%hd",&m);
	for(i=0; i<m; i++)
		scanf(" %c",&B[i]);

	printf("Sprawdzenie:\nA = [") ;
	for(int i=0;i<n;++i)
		printf("%c ",A[i]) ;
	printf("]\nB = [") ;
	for(i=0;i<m;++i)
		printf("%c ",B[i]) ;
	printf("]\n") ;
}
Podaj n = 3
d
e
g
Podaj m = 4
j
n
f
e
Sprawdzenie:
A = [d e g ]
B = [j n f e ]

0

dzięki, pomogło :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1