我输入整数,cahr,符号随机数组。我想从该数组中仅提取整数。
例如:输入为[@56gY68#$&*+7j^78gu5];
输出为56 68 7 78 5
这是我的代码:
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<ctype.h>
void main()
{
char arr[10];
int arr1[10],i;
clrscr();
for(i=0;i<10;i++)
{
scanf("%s",arr[i]);
}
for(i=0;i<10;i++){
if(isdigit(arr[i])){
arr1[i]=arr[i];
}
}
for(i=0;i<10;i++){
printf("%d",arr1[i]);
}
getch();
}
代码无法提取整数。我需要改变什么?
答案 0 :(得分:3)
此处显示的代码调用undefined behaviour。代码中的问题:
scanf()
需要指针类型参数来存储扫描值。%s
适用于字符串,%c
适用于char
。%c
,\n
不被忽略。因此,您必须像" %c"
一样使用它来避免尾随换行符。但是,我没有看到“从随机数组中提取只有一个整数”的逻辑。您可能需要再次检查逻辑。
注意:
main()
的推荐签名为int main(void)
。