输入一个字符还不行,必须十二个以上,可是不理解为什么输出的结果跟预想的不一样呢?
希望大佬帮忙看一下,谢谢!
for循环要加大括号,这种用缩进来标明循环体是python的写法,不加大括号等价于这种代码
for( i = 0; i < 12; i++ ){
scanf("%c", &str[i]);
}
//此时i=12,对于数组str[12]已经越界,打印出什么都不奇怪,而且只打印一次
printf("%c", str[i]);
应该这样写
for( int i = 0; i < 12; i++ ){
scanf("%c", &str[i]);
printf("%c", str[i]);
}
你上述写法的目的是利用一个for循环控制字符的输入输出,执行完scanf后,i已经递增为11了,再执行输出时,指向了一段不知道的区域,所以输出乱码
正确的书写应该如下:
void main()
{
char ch[12];
int i;
printf("输入:\n");
for (i = 0; i < 12; i++)
{
scanf("%c", &ch[i]);
}
for (i = 0; i < 12; i++)
{
printf("%c", ch[i]);
}
}
直接上图,上代码;
#include <stdio.h>
#include <string.h>
int main(void)
{
char arr[52];
memset(arr,0x0,sizeof(arr));
printf("Pls input string: \n");
scanf("%[^\n]",arr);
printf("%s",arr);
return 0;
}