在C言語編程中,數組是一種非常基本且常用的數據構造。高效地輸入數組數據對順序的正確性跟機能至關重要。本文將深刻探究C言語中輸入數組的一些技能,並經由過程實例剖析展示如何在現實編程中利用這些技能。
一、數組輸入的基本方法
在C言語中,輸入數組數據平日有以下多少種方法:
1. 利用scanf
函數
scanf
函數是C言語中最常用的輸入函數之一。以下是一個利用scanf
讀取整數數組的示例:
#include <stdio.h>
int main() {
int numbers[5];
printf("請輸入5個整數:\n");
for (int i = 0; i < 5; i++) {
scanf("%d", &numbers[i]);
}
// 打印輸入的數組
printf("你輸入的整數是:\n");
for (int i = 0; i < 5; i++) {
printf("%d ", numbers[i]);
}
return 0;
}
2. 利用輪回跟scanf
結合
當須要輸入大年夜量數據時,利用輪回跟scanf
結合可能簡化代碼:
#include <stdio.h>
int main() {
int n;
printf("請輸入要輸入的整數個數: ");
scanf("%d", &n);
int arr[n];
printf("請輸入%d個整數: ", n);
for (int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
// 打印輸入的數組
printf("你輸入的整數是: ");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
return 0;
}
3. 利用fgets
跟sscanf
組合
對字符串數組,可能利用fgets
讀取整行輸入,然後利用sscanf
剖析字符串:
#include <stdio.h>
int main() {
char strings[5][100];
printf("請輸入5個字符串:\n");
for (int i = 0; i < 5; i++) {
fgets(strings[i], 100, stdin);
// 去除換行符
strings[i][strcspn(strings[i], "\n")] = 0;
}
// 打印輸入的數組
printf("你輸入的字符串是:\n");
for (int i = 0; i < 5; i++) {
printf("%s\n", strings[i]);
}
return 0;
}
二、高效輸入數組的技能
1. 預分配數組大小
在讀取數組數據之前,過後分配數組的大小可能進步效力:
int n;
scanf("%d", &n);
int *arr = malloc(n * sizeof(int));
2. 利用靜態內存分配
對不斷定大小的數組,利用靜態內存分配可能更機動地處理數據:
int n;
scanf("%d", &n);
int *arr = (int *)malloc(n * sizeof(int));
if (arr == NULL) {
printf("內存分配掉敗\n");
return 1;
}
3. 避免利用未初始化的內存
在讀取數組數據時,確保不要利用未初始化的內存,這可能會招致不決義的行動:
for (int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
三、實例剖析
以下是一個利用fgets
跟sscanf
讀取字符串數組的完全實例:
#include <stdio.h>
#include <string.h>
int main() {
char strings[5][100];
int numbers[5];
printf("請輸入5個字符串跟5個整數:\n");
for (int i = 0; i < 5; i++) {
fgets(strings[i], 100, stdin);
strings[i][strcspn(strings[i], "\n")] = 0; // 去除換行符
// 剖析字符串為整數
if (sscanf(strings[i], "%d", &numbers[i]) != 1) {
printf("有效的輸入\n");
return 1;
}
}
// 打印輸入的數組
printf("你輸入的字符串是:\n");
for (int i = 0; i < 5; i++) {
printf("%s\n", strings[i]);
}
printf("你輸入的整數是:\n");
for (int i = 0; i < 5; i++) {
printf("%d\n", numbers[i]);
}
return 0;
}
經由過程以上實例,我們可能看到怎樣結合利用fgets
跟sscanf
來讀取跟剖析字符串跟整數數組。
總結來說,C言語中高效輸入數組的關鍵在於抉擇合適的輸入函數、公道分配內存以及避免利用未初始化的內存。經由過程控制這些技能,我們可能編寫出愈加高效跟結實的C言語順序。