#include< stdio.h>
#include< string.h>
#define q 20
char C[q];
int main()
{ int S;
for ( int i=0;i<=5;i++)
{while((S=getchar())!='2')
C[i]=S;}
for( int i=0;i<=strlen(C);i++)
printf("%c",C[i]);
}
首先程序能输出,看你键盘输入的数据了:
外层循环为5,
内层有个while循环,当键盘输入不为2时就继续接受输入,为二时将2的上一个字符赋给c[i];
就是每当内层while接收键盘输入,每输入一个2就跳出while,执行一次for循环,不为2就一直执行while接收键盘输入。
接收5个2后外层for循环就执行完了。程序结束。
测试数据输入12123242542778792 有5个2,恰好执行程序,多了后面的不执行,少了程序还需接收键盘输入。
因为换行符\n也是会getchar()获取到,所以你数组中全是换行符,有几个就换几行,改为如下代码
while((S=getchar())!='2')
if(S!='\n')
C[i]=S;
测试代码如下:
#include<stdio.h>
#include<string.h>
#define q 20
char C[q];
int main()
{ int S;
for ( int i=0;i<=5;i++)
{
while((S=getchar())!='2')//这里有个死循环,只要输入字符不为'2', 就一直等待输入
C[i]=S;
printf("第%d次键盘接收字符为'2'时记录前一个字符%c到c[]中\n",i,C[i]);
}
for( int i=0;i<strlen(C);i++)
{
printf("\n第%d次输入的单字符为%c",i,C[i]);
}
printf("\n最终获取结果为:%s\n",C);
}
换行符、空格不影响:
椭圆指代空格;
矩形指代换行;
:
#include<stdio.h>
#include<string.h>
#define q 20
char C[q];
int main()
{
printf("S 这个变量定义成char 就支持字符型了,int 太局限不过也可以。\n");
int S,i=0;
int D;
while((S=getchar())!='3')
{
C[i]=S;
}
printf("输出如下:");
putchar(C[0]);
}
测试数据: