Кто-нибудь может проверить мой код, пожалуйста? я не мог найти ошибку или неправильное поведение моего кода. Обратите внимание, что когда я присваиваю значение x внутри программы, все идет хорошо, но если я хочу, чтобы пользователь присвоил значение x, программа не работает должным образом. И извините за мой плохой английский. Спасибо!
#include <stdio.h>
#include <string.h>
void sorting( int array[], int x){
for (int i = 0; i < x-1; i++) // The (x-1) is because we are starting at index zero!!
{
for (int j = 0; j < x-1; j++)
{
if (array[j]>array[j+1])
{
int temp;
temp=array[j];
array[j]=array[j+1];
array[j+1]=temp;
}
}
}
}
void printing(int array[],int x) {
printf("\nThe sorting is:\n");
for (int i = 0; i < x; i++)
{
printf("%d,\t",array[i]);
}
}
int main(){
int x;
int array[x];
printf("Enter the size of your array as a natural no:\n");
scanf("%d",&x);
printf("Now enter %d nos to be arrange:\n" ,x);
for (int i = 0; i < x; i++)
{
printf("Enter a no:\n");
scanf("%d",&array[i]);
}
printf("The array of %d int no:\n",x);
for (int i = 0; i < x; i++)
{
printf("%d,\t", array[i]);
}
sorting(array,x);
printing(array,x);
return 0;
}
//I tried to assign a value for x inside the program everything goes well, but if i want the user to assign a value for x, the program doesn't work properly.
Сначала вы должны прочитать допустимое целое число для x
, а затем объявить свой массив.
объявление массива до того, как вы возьмете его размер, и создание массива приведет к неопределенному поведению
Ваш компилятор говорит что-то об использовании x
без предварительного присвоения значения? Предупреждения компилятора — это услуга для вас. Не тратьте его.
Спасибо, ребята, за вашу помощь. Теперь он работает правильно. Мне нужно объявить мою переменную из моего пользовательского ввода перед массивом.
Вам нужно сканировать x
перед определением массива, иначе x
имеет неопределенное значение, и вы вызываете Undefied Behavior.
int main(){
int x;
int array[x];
printf("Enter the size of your array as a natural no:\n");
scanf("%d",&x);
=====>
int main(){
size_t x;
printf("Enter the size of your array as a natural no:\n");
if (scanf("%zu",&x) != 1 {/* handle scanf error */}
int array[x];
Как вы думаете, какое значение будет иметь
x
, когда вы объявитеint array[x]
?