
C语言一行输入多个数字的方法有多种,如使用scanf、fgets和sscanf、以及利用动态内存分配等。 最常见的方法包括使用scanf函数读取数字,用fgets读取整行输入并使用sscanf解析,或者利用动态内存分配读取不确定数量的输入。下面将详细讲解每种方法的实现及其优缺点。
一、使用scanf读取多个数字
scanf函数是C语言中最常用的输入函数之一,可以直接读取多个数字。假设我们要读取三个整数,代码如下:
#include <stdio.h>
int main() {
int a, b, c;
printf("Enter three numbers: ");
scanf("%d %d %d", &a, &b, &c);
printf("You entered: %d, %d, %dn", a, b, c);
return 0;
}
这种方法简单直接,但要求用户输入时以空格或换行符分隔数字。如果输入格式不正确,程序可能会产生错误。
优点
- 简单直接:适合已知输入数量的情况。
- 高效:对于固定数量的输入,性能较好。
缺点
- 不灵活:无法处理不确定数量的输入。
- 易出错:输入格式要求严格,容易导致错误。
二、使用fgets和sscanf解析输入
对于不确定数量的输入,可以使用fgets读取整行输入,然后用sscanf进行解析。以下是一个读取和解析整行输入的示例:
#include <stdio.h>
#include <stdlib.h>
int main() {
char input[100];
int numbers[10];
int i = 0;
printf("Enter numbers separated by spaces: ");
fgets(input, 100, stdin);
char *p = input;
while (sscanf(p, "%d", &numbers[i]) == 1) {
i++;
while (*p != ' ' && *p != '