Грешка в цикъл на C

Nazi_93

Registered
Така, имам въведена от потребителя променливата
Код:
broi_simvoli
и следния цикъл:
Код:
for (start=0;start<=broi_simvoli;start++){
			printf ("Vuvedi simvoli: ");
			scanf("%c",&symbols[start]);
		
		}
Но в прозореца ми излиза няколко пъти
Код:
"Vuvedi simvoli"
, защо се получава така?
Благодаря предварително!

Ето и снимка:
5076.png
 
StormBreaker каза:
Защото кода, който изкарва това е вътре в тялото на цикъла.

Добре, де как да го оправя, докато стигне максималния брой символи да показва съобщението (въведи символ)
 
Fakeheal каза:
Сложи го след цикъла? Каква точно е задачата?
Да се напише програма която прави следното:
Въвежда се масив от символи (не повече от 50) (потребителя избира колко да въведе) и трябва да се разменят местата на елементите по следния начин: пърия отива на последно място, последния на първо, втория на предпоследно, а предпоследния на второ... и т.н.
Пример: 86705 50768
 
Код:
scanf("%c",&symbols[start]);

Тоя ред нещо те бърка, с променливи с тип int няма грешка. Така и трябва да е цикъла. Огледай масива какъв тип ти е, пробвай тук с %s (ако въвеждаш низ), а ако имаш учебник огледай масив от низове или дай целия код. Не можем да гадаем, пък в момента съм изморен да го мисла цялото...
 
Оправих го ето кода, ако някой се интересува:
Код:
#include <stdio.h>
#include <stdlib.h>
int main(){
 
 // Дефиниране на променливите
  int broi_simvoli=0,start=0,s=0;
  char symbols[50];

  // Проверка за въведената стойност на "broi_simvoli" Трябва да е в интервала [2;50]
  while(broi_simvoli<2 || broi_simvoli>50){
   printf ("Kolko simvola shte vuvedete? [2;50]: ");
   scanf ("%d",&broi_simvoli);
  }
  
  //Въвеждане на символите
  for(start=0;start<broi_simvoli; start++){
   printf ("Vuvedi simvol: ");
   scanf ("%c \n",&symbols[start]);
  }

  //Извеждане в обратен ред
  while(start>=1){
   printf ("obraten red: %c \n",symbols[start]);
   start--;
  }
  

system("pause");
return 0;
}

А ето и с указатели:

Код:
#include <stdio.h>
#include <stdlib.h>
int main(){
 
 // Дефиниране на променливите
  int broi_simvoli=0,start=0;
  char symbols[50],*ukazatel;

  // Проверка за въведената стойност на "broi_simvoli" Трябва да е в интервала [2;50]
  while(broi_simvoli<2 || broi_simvoli>50){
   printf ("Kolko simvola shte vuvedete? [2;50]: ");
   scanf ("%d",&broi_simvoli);
  }
  //Въвеждане на символите
  for(start=0;start<broi_simvoli; start++){
   printf ("Vuvedi simvol: ");
   scanf ("%c \n",&symbols[start]);
  }
  ukazatel=&symbols[start];
  for (*ukazatel=start;*ukazatel>=0;*ukazatel--){
	  printf ("%c",*ukazatel);
  }

 
  

system("pause");
return 0;
}
 

Back
Горе