tempArr = (char *)malloc(len2+1);
问题在这 下一行 为什么sizeof(tempArr) 这个值总等于4呢?
memset(tempArr,0x00,sizeof(tempArr));
源代码如下
#include "stdafx.h"
#include "stdio.h"
#include "string.h"
#include "stdlib.h"
int SerchStr(char *longStr,char *shortStr); //在长字符串中查找短字符串的位置函数声明
void main(int argc, char* argv[])
{
//printf("Hello World!\n");
//return 0;
char str1[31] = "abcdefghigklmnopqrstuvwxyz1234";
char str2[7] = "abcdef";
int pos = SerchStr(str1,str2);
printf("%d",pos);
}
//在长字符串中查找短字符串的位置函数实现
int SerchStr(char *longStr,char *shortStr)
{
int len1 = strlen((const char*)longStr);
int len2 = strlen((const char*)shortStr);
char *tempArr = NULL;
if(len1<len2 || len1 == 0 || len2 == 0)
return -1;
else
{
/* 动态分配内存,数组中要存char字符串,要存结束符“\0”,所以多分配一个字节的内存空间 */
//tempArr = (char *)malloc((len2+1+1)*(sizeof(char)));
tempArr = (char *)malloc(len2+1);
for(int i=0;i<=len1-len2;i++)
{
//?? 问题在这 下一行 为什么sizeof(tempArr) 这个值总等于4呢?
memset(tempArr,0x00,sizeof(tempArr));
memcpy(tempArr,longStr+i,len2);
if(strcmp(tempArr,shortStr) == 0)
{
return i+1;
}
}
return -1;
}
} |