标题:[求助] 关于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



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-84826-1-1.html




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

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