📅  最后修改于: 2023-12-03 15:12:17.997000             🧑  作者: Mango
在编程中,通常需要输入一个整数数组。在 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 函数来解析整数数组。
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 函数来将输入的字符串分割成整数数组。
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 中没有空格的整数数组。虽然这些方法各有优劣,但每一个都是可行的。如果你有更好的方法,请在评论中分享。