scanf在c中获取整数和字符
scanf get integers and chars in c
我必须使用 'scanf' 来获取一个数组的有效 int 值和另一个数组(“垃圾数组”)的其他字符,但无法使其正常工作并继续接收警告,如“警告格式指定类型 'char *'
但参数的类型为 'int (*)[4]'
.
我做错了什么?
int array[4];
char numS[4];
char garbage[100];
num = scanf(" %[0-9]d %s", &array, &garbage);
我正在尝试使用简单的输入来输入“1”或“2”。我想将用户输入的整数存储在数组中。我有一个这样的:
for (i = 0; i<5; i++)
{
printf("Write your first number");
num = scanf(" %[0-9]d %s", &array, &garbage);
printf("\nNew value: %d", array[i]); //Not showing value
}
%[0-9]d
转换说明符用于后跟字母 d
的数字字符串,例如123d
。它不适用于整数。
您应该将输入的两边都读取为字符串,然后自己进行整数转换。这是执行此操作的循环示例:
for (;;) {
char garbage[100];
int g;
if ((g = scanf(" %99[^0-9\n\r]", garbage)) != EOF) {
// Do something with garbage
} else {
break;
}
char data[100];
int d;
if ((d = scanf(" %99[0-9]", data)) != EOF) {
// Do something with data
} else {
break;
}
if (g == 0 && d == 0) {
// Both inputs are empty
break;
}
}
%99[^0-9\n\r]
表示"up to 99 non-digits except end-of-line characters"; %99[0-9]
表示 "up to 99 digits"。格式说明符前面的 Space 指示代码跳过所有空格。
Demo.
我必须使用 'scanf' 来获取一个数组的有效 int 值和另一个数组(“垃圾数组”)的其他字符,但无法使其正常工作并继续接收警告,如“警告格式指定类型 'char *'
但参数的类型为 'int (*)[4]'
.
我做错了什么?
int array[4];
char numS[4];
char garbage[100];
num = scanf(" %[0-9]d %s", &array, &garbage);
我正在尝试使用简单的输入来输入“1”或“2”。我想将用户输入的整数存储在数组中。我有一个这样的:
for (i = 0; i<5; i++)
{
printf("Write your first number");
num = scanf(" %[0-9]d %s", &array, &garbage);
printf("\nNew value: %d", array[i]); //Not showing value
}
%[0-9]d
转换说明符用于后跟字母 d
的数字字符串,例如123d
。它不适用于整数。
您应该将输入的两边都读取为字符串,然后自己进行整数转换。这是执行此操作的循环示例:
for (;;) {
char garbage[100];
int g;
if ((g = scanf(" %99[^0-9\n\r]", garbage)) != EOF) {
// Do something with garbage
} else {
break;
}
char data[100];
int d;
if ((d = scanf(" %99[0-9]", data)) != EOF) {
// Do something with data
} else {
break;
}
if (g == 0 && d == 0) {
// Both inputs are empty
break;
}
}
%99[^0-9\n\r]
表示"up to 99 non-digits except end-of-line characters"; %99[0-9]
表示 "up to 99 digits"。格式说明符前面的 Space 指示代码跳过所有空格。
Demo.