字符串出现的小问题

lj860603 2006-04-25 10:22:52
大家好,我写了一个字符串比较是否相同的程序,其中有一个问题不大懂,希望大家帮我一下;
因为我是初来,所以给不了高分数,请大家见谅:-) 代码如下:(问题在代码中)
====================================================
#include<stdio.h>

int
streql(char *str1,char *str2)
{
while(((*str1++)==(*str2++))&&(*str1))
NULL;
return ((*str1==NULL)&&(*str2==NULL));
}

/*----------------------------------------------------------*/

int
main(void)
{
char str1[20],str2[20]; //为什么这里改成==char *str1,*str2;==就出现错误 ;
printf("Please input the string1:\n");
gets(str1);
printf("Please input the string2:\n");
gets(str2);
printf("Two strings are %s the same.\n",(streql(str1,str2))?"":"not");
system("Pause");
return 0;
}
...全文
138 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
tianyanzjq 2006-04-25
  • 打赏
  • 举报
回复
我也支持楼上的看法,定义完指针以后,一定要让他有所指向,否则会出错的!而且给str1和str2赋的值也不知道放到那里去!
zez 2006-04-25
  • 打赏
  • 举报
回复
为什么这里改成==char *str1,*str2;==就出现错误

没有申请内存,那你的数据存在哪呢?? 当然要出错了!!!
铖邑 2006-04-25
  • 打赏
  • 举报
回复
char *str1 = "0123456789012345678901234567890123456789",*str2 = "0123456789012345678901234567890123456789";
铖邑 2006-04-25
  • 打赏
  • 举报
回复
char *str1 = " ",*str2 = " ";
这样可以
铖邑 2006-04-25
  • 打赏
  • 举报
回复
char *str1,*str2;只是定义指针,没有分配空间
lj860603 2006-04-25
  • 打赏
  • 举报
回复
问题已经解决,十分感谢大家!!因为分数比较少我难分配给全部人,希望我分配之后大家不要见怪.
yumin_hu 2006-04-25
  • 打赏
  • 举报
回复
把char str1[20],str2[20]; 改成char *str1,*str2;
然后就用于gets(str1),gets(str2)等,犯了一个使用指针的一个大忌:
未初始化就使用。当然会出现错误了。
mysear 2006-04-25
  • 打赏
  • 举报
回复
指针使用:
char *p = NULL;
p = (char *)malloc();
if (!p)
{
free(p);
p = NULL;
}
wind19 2006-04-25
  • 打赏
  • 举报
回复
你定义了两个指针,但都没有初始化,也没有给他们动态申请空间,所以他们是不知道要指向哪的,有两种办法,1、用malloc申请一块空间;2、给他们指向一个已经存在的空间
shshsh_0510 2006-04-25
  • 打赏
  • 举报
回复
当输入多于20个字符会出错
lucky_huastar 2006-04-25
  • 打赏
  • 举报
回复
定义了char *str1;却没有初始化,那么指针str1指向的内存单元里的值是不确定的,万一指向系统区呢?如果是赋值一个字符,得到一个编译警告,如果是赋值一个字符串,呵呵。没有分配空间来存放自然报错。

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧