c语言什么函数可以输入不定数量个整数
时间: 2024-10-10 14:03:02 浏览: 25
C语言的那些小秘密之变参函数的实现
在 C 语言中,并没有内置的函数可以直接接收不确定数量的整数作为输入,因为 C 语言是一种静态类型的语言,数组的大小需要在声明时确定。不过,你可以通过结合 `stdio.h` 中的 `scanf` 函数以及动态内存分配的方式来处理这种情况。
一种常见的做法是使用 `fgets` 读取一行字符串,然后使用 `sscanf` 或者自定义的解析函数将每个整数从字符串中提取出来。例如:
```c
#include <stdio.h>
#include <stdlib.h> // 包含 malloc 和 free 函数
#define MAX_LINE_LENGTH 100
int* read_integers(char *input, int *count) {
char line[MAX_LINE_LENGTH];
fgets(line, sizeof(line), stdin);
line[strcspn(line, "\n")] = '\0'; // 去除换行符
// 分离整数并计数
*count = 0;
char *token = strtok(line, " ");
while (token != NULL) {
(*count)++;
int num = atoi(token); // 将字符串转换成整数
int* arr = realloc(*count > 0 ? integers : NULL, (*count) * sizeof(int));
if (arr == NULL) {
perror("Memory allocation failed");
return NULL;
}
*(arr + (*count) - 1) = num; // 存储到动态分配的数组中
token = strtok(NULL, " ");
}
return integers;
}
// 使用示例
int main() {
int count;
int* integers = read_integers(stdin, &count);
if (integers) {
for (int i = 0; i < count; i++) {
printf("%d ", integers[i]);
}
free(integers); // 释放内存
}
return 0;
}
```
在这个例子中,`read_integers` 函数会读取用户输入的一行字符串,然后返回一个包含整数的数组和实际读取的整数个数。注意这只是一个基础版本,实际情况可能需要考虑错误处理和更复杂的输入格式。
阅读全文