📜  输入C中没有空格的整数数组(1)

📅  最后修改于: 2023-12-03 15:12:17.997000             🧑  作者: Mango

输入C中没有空格的整数数组

概述

在编程中,通常需要输入一个整数数组。在 C 语言中,如果我们想要输入一个整数数组,我们可以通过以下代码进行:

int arr[SIZE];
for(int i = 0; i < SIZE; i++){
    scanf("%d", &arr[i]);
}

但是,如果这个整数数组中有空格,那么输入就会出现问题。因此,在这篇介绍中,我们将介绍如何在输入 C 中没有空格的整数数组。

方案一:使用循环读取字符

我们可以使用循环读取字符,并将字符转换为数字,然后将数字存储到整数数组中。这个方案虽然有点麻烦,但它是可行的。

int arr[SIZE];
char c;
int num = 0;
int index = 0;
while((c = getchar()) != '\n' && index < SIZE){
    if(c >= '0' && c <= '9'){ // 判断字符是否为数字
        num = num * 10 + (c - '0');
    } else {
        arr[index++] = num;
        num = 0;
    }
}
if(num != 0){
    arr[index++] = num;
}
方案二:使用 sscanf 函数

sscanf 函数是一个非常方便的函数,它可以从一个字符串中读取数据,并按照给定的格式进行解析。我们可以使用 sscanf 函数来解析整数数组。

int arr[SIZE];
char str[100];
fgets(str, sizeof(str), stdin); // 读取字符串
int count = 0;
int num;
while(sscanf(str + count, "%d", &num) == 1){ // 解析字符串中的整数
    arr[count++] = num;
}
方案三:使用 strtok 函数

strtok 函数是一个将字符串分割成标记的函数。我们可以使用 strtok 函数来将输入的字符串分割成整数数组。

int arr[SIZE];
char str[100];
fgets(str, sizeof(str), stdin); // 读取字符串
char *token = strtok(str, " ");
int count = 0;
while(token != NULL){
    arr[count++] = atoi(token); // 将字符转换为数字
    token = strtok(NULL, " ");
}
总结

这篇介绍中,我们介绍了三种方法来输入 C 中没有空格的整数数组。虽然这些方法各有优劣,但每一个都是可行的。如果你有更好的方法,请在评论中分享。