如何使用C语言接收指定行数的多个数字(空格隔开)?

前言

刷题中经常碰到输入困难的情况,接收数字的时候,如果面临一个n行数,但是每一行未知个数的输入如何解决呢?
这里有两种方法

自定义函数

在这个问题上首先我们不能确定每一行到底输入了多少个,这里我们可以使用一个换行符来界定,但是每一行数据应该接收后存储到哪里呢?如果是每一行数据存一个数组,那么我们需要定义n个数组,所以我们应改使用一个数组进行追加存储。
定义一个函数void read_line(int arr[], int* last)我们每一次统计数组的最后下标last,这样在外部传入一个整数指针即可循环追加。

代码实现

#include<stdio.h>
void  read_line(int arr[], int* last) {
	char ch;
	int n;
	do
	{
		scanf_s("%d", &n);
		++(*last);
		arr[*last] = n;
		ch = getchar();
	} while (ch != '\n');
}

int main() {
	int i, length, arr[1024] = { 0 }, last = -1;
	scanf_s("%d\n", &length);
	for (i = 0; i < length; i++)
		read_line(arr, &last);

	for (i = 0; i < last; i++)
		printf("%d ", arr[i]);
	printf("%d", arr[i]);

	return 0;
}

测试样例

2
11 12 13 14
15 16 17 18

运行结果

11 12 13 14 15 16 17 18
按任意键关闭此窗口. . .
posted @ 2022-11-15 01:15  蠢蛋快跑  阅读(447)  评论(0)    收藏  举报