Вы не должны принимать пользовательский ввод внутри функции swap
.Его цель должна состоять в том, чтобы поменять местами только два целых числа.Вы можете переместить операторы scanf
в функцию main
.
#include <stdio.h>
int swap(int x, int y){
int temp = x;
x = y;
y = temp;
printf("After Swapping in swap function: x = %d, y = %d", x, y);
return 0;
}
int main(void){
int x, y;
scanf("%d", &x);
printf("%d, x is", x);
scanf("%d", &y);
printf("%d, y is", y);
swap(x, y);
printf("After Swapping in main function: x = %d, y = %d", x, y);
}
Но приведенный выше код имеет серьезную проблему.Хотя функция swap
печатает целые числа, переданные при их замене, но факт x
и y
в main
остается неизменным.
В этом случае, чтобы заставить его работать, было бы полезно использовать указатели
void swap(int *ptrx, int *ptry){
int temp = *ptrx;
*ptrx = *ptry;
*ptry = temp;
}
В функции main
вызовите swap
как swap(&x, &y);