| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1099 人关注过本帖
标题:[求助] 关于strchr函数的问题
只看楼主 加入收藏
nacybird
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2006-8-13
收藏
 问题点数:0 回复次数:2 
[求助] 关于strchr函数的问题
#include "stdio.h"
#include "string.h"
int main(void)
{
char string[15];
char *ptr;
char ch='r';
strcpy(string, "This is a string");
printf("%s\n",string);
ptr = strchr(string,ch);
if (ptr)
printf("The character %c is at position: %d",ch,ptr-string);
else
printf("The character was not found");
return 0;
}

如果string数组的大小为15的话,结果为
This is a string
The character g is at position :15
这里有两个问题求助!
1.为什么打印出的第一个结果是This is a string,string的长度不是15吗?
2.如果把数组string的长度改成20的话,即数组的长度>="This is a string"的长度既可。我想问的是这是为什么啊?
是不是跟溢出有关啊?
谢谢!
搜索更多相关主题的帖子: string strchr 函数 ptr 
2006-08-19 00:48
haroldi
Rank: 1
等 级:新手上路
帖 子:158
专家分:0
注 册:2006-7-22
收藏
得分:0 
char
...
strcpy(string, "This is a string");

string[15]中实际存的是:
{'T'、'h'、'i'、's'、' '、
'i'、's'、' '、'a'、' '、
's'、't'、'r'、'i'、'n' }分别存储在string[ 0]~string[14]中。剩余其他字符紧跟其后,将可能引起很大问题。

strcpy的使用应注意目标的空间大小。

Do people want thick road ...
2006-08-19 09:48
jiahu0215178
Rank: 1
等 级:新手上路
帖 子:49
专家分:0
注 册:2006-8-12
收藏
得分:0 
1 "This is a string"是16个字符,而不是15个字符,你定义成string[15]实际上是错误的,你没发现错误是因为c编译器没有进行检查.
2 对于不同的编译器而言,有的编译器可以运行出正确的结果。你的这个问题就是溢出。
2006-08-19 10:12
快速回复:[求助] 关于strchr函数的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.035942 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved