[求助]使用scanf时,char型的正确输入方法应该是如何?
首先是第一段代码
#include<stdio.h>
#include<stdlib.h>
main()
{
char c1,c2;
scanf("%c,%c",&c1,&c2);
printf("c1='%c',c2='%c'\n",c1,c2);
system("pause");
}
#include<stdlib.h>
main()
{
char c1,c2;
scanf("%c,%c",&c1,&c2);
printf("c1='%c',c2='%c'\n",c1,c2);
system("pause");
}
建立c1,c2为字符型变量,输入c1,c2的值后输出c1,c2。
输入:
a,b
输出:
c1='a',c2='b'
以上没有问题。
然后我修改了一下代码
#include<stdio.h>
#include<stdlib.h>
main()
{
int a,b;
char c1,c2;
scanf("%d,%d",&a,&b);
scanf("%c,%c",&c1,&c2);
printf("c1='%c',c2='%c'\n",c1,c2);
system("pause");
}
建立了两个整型变量 a,b。并先用scanf输入a,b的值。然后再输入c1,c2的值。#include<stdlib.h>
main()
{
int a,b;
char c1,c2;
scanf("%d,%d",&a,&b);
scanf("%c,%c",&c1,&c2);
printf("c1='%c',c2='%c'\n",c1,c2);
system("pause");
}
输入:
12,34
a,b
输出:
c1='
',c2='f'
出问题了……这应该是程序把换行符\n当成了c1的值。我刚开始以为这里应该断开一下,于是又改了下代码。
#include<stdio.h>
#include<stdlib.h>
main()
{
int a,b;
char c1,c2;
scanf("%d,%d",&a,&b);
printf("1\n");
scanf("%c,%c",&c1,&c2);
printf("c1='%c',c2='%c'\n",c1,c2);
system("pause");
}
在输入a,b的值后,让它先输出个1,然后再输入c1,c2。#include<stdlib.h>
main()
{
int a,b;
char c1,c2;
scanf("%d,%d",&a,&b);
printf("1\n");
scanf("%c,%c",&c1,&c2);
printf("c1='%c',c2='%c'\n",c1,c2);
system("pause");
}
输入:
12,34
(输出1)
a,b
输出:
c1='
',c2='f'
依然如旧……
于是我用了第二个程序,不过改变了一下输入方法。
输入:
12,34a,b
输出:
c1='a',c2='b'
以上。
我的问题是,要如何写代码才能保证在不出错的情况下将a,b的值和c1,c2的值分为两行输入?
编辑器是dev c++
[此贴子已经被作者于2007-9-19 10:52:14编辑过]