dawar budroo Ответов: 3

Findd y он не дает выхода


#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<math.h>

 main()
{

	int a=0,b=0;
	int sum;
	char c;


	

	printf("\n\n\tENTER THE FIRST operand   ");
	scanf("%d",&a);
	printf("\n\n\tENTER THE SECOND operand   ");
	scanf("%d",&b);
	
	printf("\n\n \t\tFOR SUMMATION PRESS +  ");

	scanf("%s",&c);
	
 if(c=='+')
{


	printf("\n\n |RESULTS|");

	
	
	
	sum=a+b;
	printf("\n\n\tSUMMATION OF %d AND %d IS : %d \n\n",a,b,sum);

}
else {

	printf("\n\n\n\t\t\t  INVALID OPERATOR ENTER CORRECT OPERATOR ");



}
}


Что я уже пробовал:

попытался ассимилировать значения bt ставит вторую переменную в 0 по itslf

3 Ответов

Рейтинг:
23

OriginalGriff

Вероятно, именно это и вызывает проблему:

char c;
...
scanf("%s",&c);

Когда вы вызываете scanf с форматом "%s", он ожидает - и извлекает - строку с нулевым завершением, а не один символ. Поскольку вы выделяете только один символ для строки, он будет переполнять пространство, которое вы ему дали, и на практике то, что происходит дальше, находится в руках автора компилятора - это незаконная операция, и поэтому эффекты не определены.

Измените определение c на массив символов:
char operator[100];
И прочитать строку от пользователя:
scanf("%s",operator);
Затем проверьте первый введенный пользователем символ:
if (operator[0] == '+')
Это должно работать лучше.


dawar budroo

спасибо вам ооооочень много сэр.... сделал мой день

OriginalGriff

Пожалуйста!

Рейтинг:
20

CPallini

Цитата:
scanf ("%s",& c);
использование "%s" спецификатор формата с char переменная-это ошибка.
Попробуйте, например
#include<stdio.h>
#include<stdlib.h>

int  main()
{
  int a=0,b=0;
  int sum;

  printf("\n\n\tENTER THE FIRST operand   ");
  scanf("%d", &a);
  printf("\n\n\tENTER THE SECOND operand   ");
  scanf("%d",&b);

  printf("\n\n \t\tFOR SUMMATION PRESS +  ");

  while ( getchar() != '+')
  {
    printf("\n\n\n\t\t\t  INVALID OPERATOR ENTER CORRECT OPERATOR ");
  }
  printf("\n\n |RESULTS|");
  sum=a+b;
  printf("\n\n\tSUMMATION OF %d AND %d IS : %d \n\n",a,b,sum);
  return 0;
}


dawar budroo

bang.... u сделал мой день спасибо youuuuuu < 3

CPallini

Добро пожаловать.

Рейтинг:
2

Richard MacCutchan

Вы уже разместили это по адресу Пожалуйста, помогите, что это за логическая ошибка ... Скомпилируйте и запустите код и проверьте .. Г это дает непредвиденную ошибку[^], и получил некоторые предложения. Пожалуйста, не повторяйте один и тот же вопрос.