有两行scanf不能运行,求大佬帮忙看看
int main(){
char a,b;
int n,m,i;
printf("input a n=");
scanf("%d",&n);
printf("input a[]\n");
for(i=0;i<n;i++)
{
scanf("%c",&a);
}
printf("input b j=");
scanf("%d",&m);//这行运行不了
printf("input b[]\n");
for(i=0;i<m;i++)
{
scanf("%c",&b);//这行也未运行
}
arr(a,n,b,m);
return 0;
}PS:arr函数前面已经定义过了
本帖最后由 番杰 于 2021-11-1 16:41 编辑
我其实有点好奇这条语句有没有运行:
for(i=0;i<n;i++)
{
scanf("%c",&a);
}
&a,数组名前加&,它的数据类型是一个数组指针;
我也不太确定scanf("%c",&a);这个是否可以;
我建议改成这样试试:
.......
for(i=0;i<n;i++)
{
scanf("%c",&a);//只修改这两个
}
.....
.....
.....
for(i=0;i<m;i++)
{
scanf("%c",&b);//只修改这两个
}
.....
每个scanf函数后都加一行
getchar();
用来把你上面输入的回车\n读取掉 要不影响你下个sacnf的输入
其实只在两个for循环的scanf后加
getchar();也可以
在每次键盘输入前,用 fflush(stdin)清空键盘缓冲区
#include <stdio.h>
int main(void)
{
char a , b ;
int n , m , i ;
printf("input a n = ") ;
scanf("%d" , & n) ;
printf("input a[] : ") ;
fflush(stdin) ; // 清除键盘缓冲区内剩余的回车符 '\n'
for(i = 0; i < n ; i ++) scanf("%c" , & a) ;
fflush(stdin) ; // 清除键盘缓冲区内剩余的字符,以免影响后续输入
printf("input b j = ") ;
scanf("%d" , & m) ;
printf("input b[] : ") ;
fflush(stdin) ; // 清除键盘缓冲区内剩余的回车符 '\n'
for(i = 0 ; i < m ; i ++) scanf("%c" , & b ) ;
fflush(stdin) ; // 清除键盘缓冲区内剩余的字符,以免影响后续输入
printf("a[] : ") ;
for(i = 0 ; i < n ; i ++) printf("%c" , a) ;
printf("\n") ;
printf("b[] : ") ;
for(i = 0 ; i < m ; i ++) printf("%c" , b) ;
printf("\n") ;
}
编译、运行实况:
D:\0002.Exercise\C>g++ -o x x.c
D:\0002.Exercise\C>x
input a n = 8
input a[] : ABCdefgHIJKL
input b j = 4
input b[] : 0987654321
a[] : ABCdefgH
b[] : 0987
D:\0002.Exercise\C> 番杰 发表于 2021-11-1 16:28
我其实有点好奇这条语句有没有运行:
&a,数组名前加&,它的数据类型是一个数组指针;
它来了~ jackz007 发表于 2021-11-1 17:17
在每次键盘输入前,用 fflush(stdin)清空键盘缓冲区
编译、运行实况:
感谢感谢!!!
页:
[1]