char ()的问题

LI-O 2014-01-25 11:31:16
#include<stdio.h>
int main(void)
{
char a[40];
scanf("%c",a);
printf("%s\n",a);
}
在这个例子中 输入 sda.输出 s 即 输出的都是 第一个,发生了什么

当我变成
#include<stdio.h>
int main(void)
{
char a[40];
scanf("%s",a);
printf("%c\n",a);
}
的时候。 输入 zxc
输出 (空格)
这时候怎么回事, 首先,a 的内存够了。 然后我付给她 abc 值
然后,读取 一个字符, 怎么也不应该输出空格。。 求解~~
...全文
113 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
LI-O 2014-01-26
  • 打赏
  • 举报
回复
不是
考虑考虑考虑考虑
xinhua0910 2014-01-26
  • 打赏
  • 举报
回复
第一个 %s只输出了一个字符就好说嘛,那是因为你读的时候,只读了一个字符 第二个 %c想输出字符串,但实际是printf("%c", 字符串a的首地址),那个首地址一般是个很大的负数,那个数没有字符与之对应(要么是空格,要么是乱码),所以输出是空格。 你也可以自己试下 int iTmp = -1076746208; printf("[%c]\n", iTmp);
猫仔- 2014-01-26
  • 打赏
  • 举报
回复
引用 楼主 w15tp 的回复:
#include<stdio.h> int main(void) { char a[40]; scanf("%c",a); printf("%s\n",a); } 在这个例子中 输入 sda.输出 s 即 输出的都是 第一个,发生了什么 当我变成 #include<stdio.h> int main(void) { char a[40]; scanf("%s",a); printf("%c\n",a); } 的时候。 输入 zxc 输出 (空格) 这时候怎么回事, 首先,a 的内存够了。 然后我付给她 abc 值 然后,读取 一个字符, 怎么也不应该输出空格。。 求解~~
字符和字符串?
木木口口 2014-01-26
  • 打赏
  • 举报
回复
引用 楼主 w15tp 的回复:
#include<stdio.h> int main(void) { char a[40]; scanf("%c",a);-------这块以一个字符的格式接收,所以只会读入你的第一个字符 printf("%s\n",a);------以字符类型读入,以字符串类型输出之前请在字符数组最后加'\0'} 在这个例子中 输入 sda.输出 s 即 输出的都是 第一个,发生了什么 当我变成 #include<stdio.h> int main(void) { char a[40]; scanf("%s",a); printf("%c\n",a);-----这块改成*a就可以输出第一个字符了 } 的时候。 输入 zxc 输出 (空格) 这时候怎么回事, 首先,a 的内存够了。 然后我付给她 abc 值 然后,读取 一个字符, 怎么也不应该输出空格。。 求解~~
不明白你写这个到底想实现什么
u011043553 2014-01-26
  • 打赏
  • 举报
回复
不管是

scanf("%c",a);
printf("%s\n",a);
还是

 scanf("%s",a);
printf("%c\n",a);
%c换成%s就可以了。。
赵4老师 2014-01-26
  • 打赏
  • 举报
回复
其实电脑开机后物理内存的每个字节都是可读写的,区别仅在于操作系统内存管理模块在你读写时是否能发现并是否采取相应动作而已。操作系统管理内存的粒度不是字节而是页,一页通常为4KB。
猫仔- 2014-01-26
  • 打赏
  • 举报
回复
显式调用就OK 如: printf("%d",a[1]);

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧