运行这个程序时输入“input”为什么输出语句中只有一个“i",而没有整个”input“

Android收割者 2014-11-22 11:27:41
#include <stdio.h>
int main (int argc,char **argv)
{
char c;
printf("Please input a character:\n");
scanf("%c",&c);
printf("The ASCII of %c is %d\n",c,c);
}



当输入的是中文字符时,为什么输出的是一个”?“还有对应的ASCII码是随机产生的还是真的是这一个。
...全文
189 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
那个少年 2014-11-23
  • 打赏
  • 举报
回复

#include<iostream>
using namespace std;
starytx 2014-11-22
  • 打赏
  • 举报
回复
仅供参考
	char c[20] = {0};
	printf("Please input a character:\n");
	scanf("%s",&c);			// 字符串要用 %s
	char * p = c;
	while (*p != '\0')
	{
		printf("The ASCII of %c is %d\n",*p,*p);
		p++;
	}
汉子无法用原先的ascll码表示,一个汉字需要2个字节来表示
starytx 2014-11-22
  • 打赏
  • 举报
回复
你scanf里边是%c就是接收一个字符,怎么能输出后边的呢?
「已注销」 2014-11-22
  • 打赏
  • 举报
回复
scanf函数会将多余的字符留在缓冲区,下去调用scanf不等待键盘输出,直接重缓冲区读取数据。 以下内容,仅供参考。
/*************************************************************************
    > File Name: scanf_1.c
    > Author: 傻李
    > Mail: hellojukay@gmail.com 
    > Created Time: 2014年11月22日 星期六 12时07分00秒
 ************************************************************************/

#include<stdio.h>
int main()
{
	char ch;
	printf("Please input a character:\n");
	scanf("%c",&ch);
	while(ch != '\n')
	{
		printf("The ASCII of %c is %d\n",ch,ch);
		scanf("%c",&ch);
	}
	return 0;
}
707wk 2014-11-22
  • 打赏
  • 举报
回复
引用 2 楼 starytx 的回复:
你scanf里边是%c就是接收一个字符,怎么能输出后边的呢?
+1
BeckyLu 2014-11-22
  • 打赏
  • 举报
回复
3楼正解,char只有一个字节哈, 汉字是2个字节, 所有你打印的只是汉字中国中的中字的前1个字节........
Android收割者 2014-11-22
  • 打赏
  • 举报
回复
什么意思,不清楚,可否详细说明一下

70,037

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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