有关c语言的一个问题

从键盘上读入一行字符,在屏幕上输出该行字符的长度及内容(先输出长度,后输出内容)。注意:(1)以回车表示行结束且回车不计入输入内容。若读入过程中发生错误或遇到文件结束,则... 从键盘上读入一行字符,在屏幕上输出该行字符的长度及内容(先输出长度,后输出内容)。
  注意:
  (1)以回车表示行结束且回车不计入输入内容。若读入过程中发生错误或遇到文件结束,则也表示行输入结束。
  (2)若用户输入时输入了很多字符,则仅读入前100个字符。
  (3)不能使用库函数gets、fgets、strlen或使用同名的变量、函数、单词。
  (4)编程可用素材:printf("input a string: ")...、printf("\nThe string lenth is: ...、printf("\nThe string is: ...。
这是题目要求,下面是我编的程序。
#include <stdio.h>

int main(void)
{
char ch[10];
int i;

printf("input a string: \n");
for (i = 0 ; (ch[i] = getchar()) != '\n' && i < 100 ; i++)
{
;
}
printf("\nThe string lenth is: %d", i);
printf("\nThe string is: %s", ch);
return 0;
}
运行的时候会出现个什么指令引用的什么内存不能为read。但还是有结果的,而且结果也是正确的
展开
 我来答
百度网友3a074977f
2011-10-25 · TA获得超过3467个赞
知道小有建树答主
回答量:611
采纳率:0%
帮助的人:732万
展开全部
for (i = 0 ; (ch[i] = getchar()) != '\n' && i < 100 ; i++)

注意语句中的"i<100",你的的ch[]最多只有10个元素,而你的i<100,造成非法访问,导致“内存不能为read”。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
舒心还飒爽丶彩旗x
2011-10-25 · TA获得超过1545个赞
知道小有建树答主
回答量:1594
采纳率:75%
帮助的人:742万
展开全部
#include <stdio.h>

int main(void)
{
char ch[100]; //数组空间太小了
int i;

printf("input a string: \n");
for (i = 0 ; (ch[i] = getchar()) != '\n' && i < 100 ; i++)
{
;
}
printf("\nThe string lenth is: %d", i);
printf("\nThe string is: %s", ch);
return 0;
}
有问题再追问
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2011-10-25
展开全部
getchar的问题,你用scanf %c输入就没问题了,而且你漏了
ch[i]='\0';
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式