当前位置: 代码迷 >> C语言 >> 为什么程序执行后回多出来Null pointer assignment 这句话
  详细解决方案

为什么程序执行后回多出来Null pointer assignment 这句话

热度:702   发布时间:2006-05-06 22:22:00.0
为什么程序执行后回多出来Null pointer assignment 这句话

为什么这个程序每次执行完都会多出一句: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编辑过]

搜索更多相关的解决方案: assignment  pointer  Null  char  

----------------解决方案--------------------------------------------------------
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编辑过]


----------------解决方案--------------------------------------------------------
  相关解决方案