我將幾個數字作爲用戶的輸入,將它們存儲到一個文件中,然後從該文件讀取數據,對數字進行排序並將其顯示給用戶。該程序的作品除1個問題。當從用戶那裏得到輸入時,它要求額外的元素超過指定的限制。這個額外的元素不會被存儲在任何地方。我曾嘗試將極限值減1,但導致1個元素的損失(即1個元素變爲0)。我明白這可能是一個非常新手的問題,但我沒有找到任何直接的答案來解決這個問題。我在Visual Studio 2010中將程序編寫爲C程序。下面的代碼:數組在用戶輸入時超出限制
#include <stdio.h>
int arr[50];
int n;
int writefile()
{
FILE *ptr;
ptr = fopen("Sort.txt","w");
if(ptr==NULL)
{
printf("No such file exists\n");
fclose(ptr);
return 0;
}
else
{
int i;
printf("Enter number of elements in array\n");
scanf("%d", &n);
printf("Enter %d elements\n", n);
for(i=0; i<n; i++) //The issue is here
{
scanf("%d\n",&arr[i]); //say the user enter n=3, then after adding 1,2,3 it will ask for another 4th element but only 1,2,3 will get stored.
}
fwrite(arr, sizeof(int), n, ptr);
fclose(ptr);
printf("done\n");
}
}
void sortarr(int arr1[]);
int readfile()
{
FILE *ptr;
ptr = fopen("Sort.txt","r");
if(ptr==NULL)
{
printf("No such file exists\n");
fclose(ptr);
return 0;
}
else
{
int i;
int arrb[50];
fread(arrb, sizeof(int), n, ptr);
printf("Before sorting data\n");
for(i=0; i<n; i++)
{
printf("%d",arrb[i]);
}
printf("\n");
sortarr(arrb);
printf("After Sorting data\n");
for(i=0; i<n; i++)
{
printf("%d",arrb[i]);
}
printf("\n");
}
}
void sortarr(int arr1[])
{
int i,j,temp;
for (i = 0; i < n; i++) {
for (j = i + 1; j < n; j++) {
if (arr1[i] > arr1[j]) {
temp = arr1[i];
arr1[i] = arr1[j];
arr1[j] = temp;
}
}
}
}
int main()
{
writefile();
readfile();
return 0;
}
人們低調,請你提供一個理由。它會幫助我製作未來的帖子。謝謝。 – Ghos3t