在C語言中,scanf
函數通常用于從標準輸入(如鍵盤)讀取數據
fread
或fwrite
:這兩個函數比scanf
和printf
更快,因為它們直接從文件緩沖區讀取/寫入數據,而不是格式化字符串。你可以將輸入重定向到文件,然后使用fread
讀取數據到數組中。#include<stdio.h>
int main() {
int array[100];
FILE *file = fopen("input.txt", "r");
if (file == NULL) {
printf("Error opening file.\n");
return 1;
}
fread(array, sizeof(int), 100, file);
fclose(file);
return 0;
}
getchar
或putchar
:這些函數比scanf
和printf
更快,因為它們直接從文件緩沖區讀取/寫入字符。你可以使用getchar
逐個讀取字符,然后將其轉換為整數。#include<stdio.h>
#include <ctype.h>
int get_int() {
int num = 0;
char ch;
while ((ch = getchar()) != EOF && isdigit(ch)) {
num = num * 10 + (ch - '0');
}
return num;
}
int main() {
int array[100];
for (int i = 0; i < 100; i++) {
array[i] = get_int();
}
return 0;
}
scanf
的批量讀取功能:scanf
可以一次讀取多個值,只需在格式字符串中指定足夠的空間。這樣可以減少函數調用次數,從而提高效率。#include<stdio.h>
int main() {
int array[100];
for (int i = 0; i < 100; i += 10) {
scanf("%d %d %d %d %d %d %d %d %d %d", &array[i], &array[i+1], &array[i+2], &array[i+3], &array[i+4], &array[i+5], &array[i+6], &array[i+7], &array[i+8], &array[i+9]);
}
return 0;
}
請注意,這些方法可能需要根據你的具體需求進行調整。在選擇最佳方法時,請考慮輸入數據的格式、數組大小以及程序的其他部分。