为什么这个程序每次执行完都会多出一句:Null pointer assignment,不知道为什么,但返回值并没有错,请高手给予迷津指点:
int Strcmp(char *s1,char *s2)
{
int c,i=0;
while((*(s1+i)!='\0')&&(*(s2+i)!='\0'))
{
if(*(s1+i)!=*(s2+i)) break;
i++;
}
c=*(s1+i)-*(s2+i);
return(c);
}
main()
{
static char *str[5];
int i,c;
char *s1, *s2;
for(i=0;i<5;i++)
str[i]=(char *)malloc((strlen(str[i])+1));
for(i=0;i<2;i++)
scanf("%s",str[i]);
s1=str[0],s2=str[1];
c=Strcmp(s1,s2);
printf("%d",c);
for(i=0;i<5;i++)
free(str[i]);
}
[此贴子已经被作者于2006-5-6 22:22:42编辑过]
----------------解决方案--------------------------------------------------------
str[i]=(char *)malloc((strlen(str[i])+1));
str[i]是多少
----------------解决方案--------------------------------------------------------
我用WIN-TC运行怎么没有错呢
请指教
----------------解决方案--------------------------------------------------------
自己对照,认为不必要的东西已经去掉
[CODE]
#include "stdio.h"
#include "malloc.h"
#define N 20
int Strcmp(char *str1,char *str2)
{
for(;*str1==*str2;str1++,str2++)
;
return (*str1-*str2);
}
int main()
{
char *str[2];
int i;
for(i=0;i<2;i++)
str[i]=(char *)malloc( sizeof(char)*N );
for(i=0;i<2;i++)
gets(str[i]);
printf("%d\n",Strcmp(str[0],str[1]) );
for(i=0;i<2;i++)
free(str[i]);
return 0;
}
[/CODE]
----------------解决方案--------------------------------------------------------
说明:
基于良好的习惯培养,不要总不加头文件,所以TC系列这方面其实不好
char *str; 再未分配空间前,它只指向一个字节大小的空间,而不是串指针
只有两个串,申请了5段空间,浪费!
用gets()更好,可录取空格
s1,s2多余
自定义函数很乱
----------------解决方案--------------------------------------------------------
楼上的你人太好,程序都出来了,告诉他什么错了不就完了吗?她要是MM给写个程序还行
----------------解决方案--------------------------------------------------------
我对ZZCCY 有偏爱~ 他比较听话,而且谦虚
----------------解决方案--------------------------------------------------------
----------------解决方案--------------------------------------------------------
问题解决了,感谢feng1256,每次都是一针见血的指出问题,让我收获很多.
不过我发现我的问题真的很大啊,太多问题了,通过大家的帮助,我会慢慢改正,提高的.
----------------解决方案--------------------------------------------------------
来论坛快一周了,感慨颇多,收获更多,简单总结一下吧
1、区别于库函数,自定义函数名最好大写。
2、要养成良好的习惯,即使用TC编译也不要忘记加头文件。
3、对数组和变量等初始化的时候要用简洁表达。
4、为了使程序简洁效率更高,不要定义多余的变量。
5、申请空间要经济合理避免空间无端的浪费。
6、对算法等要要求严谨,避免多余的执行步骤.
这些是我最近在论坛通过大家的帮助得到的一些收获,其实收获还有很多,很多只是那些太具体就没有一一写出来,在这里特别的鸣谢feng1256,论坛,hqx
……. 等朋友!
[此贴子已经被作者于2006-5-7 0:15:57编辑过]
----------------解决方案--------------------------------------------------------