【发布时间】:2011-07-19 20:17:53
【问题描述】:
我必须比较从第二个字符到第四个字符的字符串中的几个字符(计数从零开始)
该字符串存储在结构元素中,例如 zoopla->real
例如 zoopla ->real 有 '447889036' 其中 real 是 char real[20] 类型;
另请注意,我不能使用函数 strnstr。
代码按预期工作,但只是出于好奇,我添加了 printf 语句,它显示我的价值直到第 4 个 cahr,然后是一些 garabe 字符。
我想知道为什么 printf 语句显示 2 个额外的 garabe 值?
char * copyTemp;
char *strptr;
copyTemp = (char *)malloc(sizeof(char)*6);
strncpy(copyTemp, zoopla->real, 5);
printf("the string copied is %s", copyTemp); // debug statemnt
strptr = strstr(copyTemp, "666");
if(strptr != NULL)
{
//some other function
}
else
//some other function
free(copyTemp);
欢迎大家提出批评和建议
【问题讨论】:
-
你能告诉我们
zoopla->real的价值是什么吗? -
你为什么要mallocing
copyTemp而不仅仅是char copyTemp[6] = {0,0,0,0,0,0};?这也需要对其进行零初始化。 -
@Kerrek SB copyTemp[6] = {0} 就足够了吧?或者他可以使用 calloc
-
@Vivek: Err.. 我不确定缺少的数组成员是否会归零,所以我想明确一点。
calloc是可能的,但我的意思是为什么将六个字节放在堆上并引起头痛...... -
我知道我可以在没有 malloc 的情况下使用 char,但只是对使用 malloc 感到好奇。有什么害处吗?