來源:C語言編程 - 編譯錯誤:格式「%s」的預期輸入「字符*」
/*
* Name: Adam Chubbuck
* Date: 1/12/2014
* Class: CSC-1720
* Comment: Assignment #1 (Load-Sort-Print) v1
*/
#include<stdio.h>
int load(char fileName[], int array[]);
int sort(int array[], int length);
int print(int length, int array[]);
int main() {
char fileName[100];
int numList[300];
int length;
printf("File Name: ");
scanf("%s", &fileName);
length = print(sort(numList,load(fileName, numList)), numList);
printf("\nLength: %i\n", length);
printf("Finished execution.\n");
return 0;
}
int load(char fileName[], int array[]) {
FILE *input = fopen(fileName, "r");
int length = 0, i = 0;
if(input == NULL) {
fprintf(stderr, "Error accessing file.\n");
} else {
while(fscanf(input, "%i", &array[i]) != EOF) {
i++;
length++;
}
}
fclose(input);
return length;
}
int sort(int array[], int length) {
int a, b, c;
for (a = 0 ; a < (length - 1); a++) {
for (b = 0 ; b < length - a - 1; b++) {
if (array[b] > array[b+1]) {
c = array[b];
array[b] = array[b+1];
array[b+1] = c;
}
}
}
return length;
}
int print(int length, int array[]) {
int i;
printf("\n[NUMBERS]\n\n");
for (i = 0; i< length; i++) {
printf("[N]%i\n", array[i]);
}
return length;
}
我已經通過對這個問題類似主題的閱讀和他們建議我從scanf函數刪除符號語句,但是當我這樣做並使用I/O重定向到文件時,它似乎陷入了一個無限循環,暗示它無法爲文件名字符數組賦值。
./a.out <test.txt> output.txt
刪除&。這是一個編譯器錯誤,如果你刪除它,它會被解決。另一件事是因爲你有多個錯誤... – deviantfan