c语言输入问题
‘壹’ c语言输入格式问题
scanf里,双引号下面是什么样子的,输入的时候就必须原封原样地输入。
所以,不必要的情况下,一般不在格式符之间添加多余的空格啊、逗号啊之类的。
如果添加了的话,输入的时候就必须要对应输入进去才行。
i=scanf("%d%d,%d",&x,&y,&z);
上面这句语句里的scanf的双引号下面的格式控制符的意思是“一个整型、一个整型、一个逗号、一个整型”,所以输入的时候也要按“一个整型、一个整型、一个逗号、一个整型”的样式输入。当然了,第一个整型和第二个整型之间要么用空格,要么用回车来分隔,这是scanf默认的分隔数字的方式。
如有帮助,烦请点采纳,谢谢!
‘贰’ c语言的字符输入问题
#include<stdio.h>
main()
{
char
c;
scanf("%c",&c);//输入abc并按回车后,字符变量c存的是‘a’,bc回车符存在缓冲区
while(c!='+'&&c!='-'&&c!='*'&&c!='/')
{
printf("agin\n"),
scanf("%c",&c);
}
/*因为字符变量c的值为‘a’,所以执行第一次循环,输出agin
并输入,由于缓冲区有字符
所以直接向缓冲区取一个字符,是'b'这个字符,所以此时,字符变量c为'b',再次执行第二次循环,同理,字符变量c从缓冲区取字符c,执行第三次循环
再从缓冲区取回车符,执行第四次循环,注意输出四个agin后,再次执行scanf("%c",&c)
,不知道你发现了没有,程序并没有结束,会有一个光标闪动,没有出现press
any
……,就是这个原因*/
}
//说明:scanf()可以接收回车符
//不信的话你可以在你的循环体里加一语句:printf("%c\n",c);
//希望能够帮助到你
‘叁’ 一个C语言字符串输入问题
int
main()
{
char
s[50],s1[50],*s2;
gets(s);
s2=gets(s1);
printf("%s\n",s);
printf("%s\n",s1);
printf("%s\n",s2);
short
i;
cin>>i;
return
0;
}
s1和s2是一样的
getc的原型
int
getc(
FILE
*stream
);
它是从
文件流
里面获取并返回下一个字符,如果到达文件尾返回EOF与fgetc是一致的
getchar
的原型
int
getchar(
void
);
从标准输入获取并返回下一个字符,如果到达末尾返回EOF
gets的原型
char
*gets(
char
*str
);
gets()函数从标准输入读取字符并把它们加载到str(字符串)里,直到遇到新行(\n)或到达EOF.
gets()的
返回值
是读入的字符串,如果错误返回NULL.
‘肆’ c语言的输入输出问题
1:字符输入输出是%c,不是%ch
2:输入整型后输入字符,需要刷新下缓冲区或者过滤一个回车。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
structteacher
{
intnum;
charname[100];
charsex;
};
intmain(void)
{
structteacher*p=(structteacher*)malloc(sizeof(structteacher));
printf("teacher'sname:");
scanf("%s",p->name);
printf("teacher'snumber:");
scanf("%d",&p->num);
getchar();//过来回车
printf("teacher'ssex:");
scanf("%c",&p->sex);//%c
printf("teacher'snumber:%d ",p->num);
printf("teacher'sname:%s ",p->name);
printf("teacher'ssex:%c ",p->sex);//%c
return0;
}
‘伍’ C语言的一个输入语句问题
解释:
1、在用“%c”格式输入字符时,空格字符和“转义字符”都作为有效字符输入:
scanf("%c%c%c",&c1,&c2,&c3);
如输入a
b
c
字符‘a’送给c1,字符‘
’送给c2,字符‘b’送给c3,因为%c只要求读入一个字符,后面不需要用空格作为两个字符的间隔,因此‘
’作为下一个字符送给c2。
2、当你的);②scanf
("%d
%d",&a,&b);
scanf
(
"
%c
%c",&c,&d);第二个语句“后有个空格"时系统默认你输入的两个数据之间存在空格字符或者转义字符。
其实是很简单的一个问题。
‘陆’ 为什么C语言程序输入不了内容,有什么错误
二维字符串数组a[n][m],其中a[n]的是行指针,表示的一行数据。
所以在你图中代码char c[5][20];c[i]就表示一行字符串的首地址。
同理s数组也是。
所以当输入c和s数组,用c[i],s[i]做参数,不要加&,直接写scanf("%s%s",c[i],s[i])就可以了。
而a是不是字符数组,%f不能直接对应一行,而要对应其中一个元素,所以要写&a[i][j]。
而你的循环条件也不对,你那样写,字符数组,浮点数组循环输入次数是不一样的,要分开循环。
另外scanf输入默认是空格分隔,所以字符串和字符串之间要有空格,每个数字之间也要空格。像这样输入:
#include <stdio.h>
int main()
{
int i,j;
char c[5][20];
char s[5][20];
float a[11][6];
printf("please input: ");
for(i=0;i<5;i++)
scanf("%s%s",c[i],s[i]);
for(i=0;i<11;i++)
for(j=0;j<6;j++)
scanf("%f",&a[i][j]);
printf(" 输出打印: ");
printf("c数组内容: ");
for(i=0;i<5;i++)
printf("%s ",c[i]);
printf("s数组内容: ");
for(i=0;i<5;i++)
printf("%s ",s[i]);
printf("a数组内容: ");
for(i=0;i<11;i++,printf(" "))
for(j=0;j<6;j++)
printf("%f",a[i][j]);
return 0;
}
‘柒’ c语言 输入输出问题
缓冲区里数据没清空
#include<stdio.h>
void
main()
{
putchar(getchar());
fflush(stdin);
putchar(getchar());
fflush(stdin);
putchar(getchar());
putchar('\n');
}
这样就对了,每次输入后强制清空标准输入流
‘捌’ C语言输入问题
最好用一个scanf();把所有要输的东西都放进去,因为scanf 是你" "里面 什么样的格式,你在输入的时候必须按照那样的格式
例如:
scanf("%d,%d",&a,&b);那么在输入时就要输a,b 如果是scanf("%d %d",&a,&b);就要这样输:a b
多个scanf 连在一起 我还没用过。所以建议 一个scanf把你要连在一起输的数据 都输进去;程序中输入的时候a= 这些都不必要 可以把程序改了:
scanf("%d %c %ld %f %lf",&a,&b,&c,&d,&e);输入的时候:a b c d e
这样就好了
输出也错了 只需要:printf("a=%d b=%c c=%ld d=%f e=%lf",a,b,c,d,e);以此类推 不需要带上&符号 否则是错误的
‘玖’ c语言,输入问题
以上代码的输入问题就在scanf("%d\n",p);这句,这里多了个\n,强制要求多输入一个回车,应该改为:
scanf("%d",p);
‘拾’ C语言 字符输入问题
假如你输入abc实际上是a\nb\nc\n
6个字符了。
#include
<stdio.h>
#include
<stdlib.h>
int
main()
{
char
c;
int
i,n;
scanf("%d",&n);
for
(i=1;i<=n;i++){
scanf("%c",&c);
getchar();
//截取'\n'
}
}