求输入字符串的长度,这样写为什么会抛出异常?

lyfhhu 2009-12-11 06:55:38
#include "stdafx.h"
#include <string>
#include <iostream>
using namespace std;
int Length(char *p);

int main(int argc, char* argv[])
{
int len ;
char *a,str[20];
printf("Input string:");
scanf("%s",str);
a=&str[0];
len=Length(a);
printf("The length of string is %d.",len);
cin.ignore(100,'\n');
cin.get();
return len;
}

int Length(char *p)
{int n=0;
while((*p!='\0')&&(n<20))
{n++;
p++;
}
return n;

}
...全文
113 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
yumin1891 2009-12-13
  • 打赏
  • 举报
回复
没问题a
yumin1891 2009-12-13
  • 打赏
  • 举报
回复
没问题a
太乙 2009-12-11
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 lyfhhu 的回复:]
哦,谢谢了,那怎样避免产生越界错误了
[/Quote]

如果是c++,可以使用cin.getline()来控制!

istream& getline (char* s, streamsize n );
istream& getline (char* s, streamsize n, char delim );
kouwenlong 2009-12-11
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 lyfhhu 的回复:]
哦,谢谢了,那怎样避免产生越界错误了
[/Quote]
只能自己控制。
lyfhhu 2009-12-11
  • 打赏
  • 举报
回复
哦,谢谢了,那怎样避免产生越界错误了
qqwx_1986 2009-12-11
  • 打赏
  • 举报
回复
没问题吧
只是输入的时候别超过20个字符,否则越界肯定会出问题了
lyfhhu 2009-12-11
  • 打赏
  • 举报
回复
输入字符串后,按回车,然后就抛出一个“Unhandled exception in 11.exe:0xC0000005:ACCESS VIOLATION.”的异常,不知为何。编译环境是vc++6
qqwx_1986 2009-12-11
  • 打赏
  • 举报
回复
抛什么异常

33,311

社区成员

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

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