编写mystrcmp(), 实现strcmp()功能

qq_28839381 2015-07-20 09:25:13
#include "stdio.h"
#include "string.h"
int mystrcmp(char *, char *);

int main(int argc, char const *argv[])
{
char *a, *b;
int i;

scanf("%s%s", a, b);
i = mystrcmp(a, b);
printf("%d\n", i);

return 0;
}

int mystrcmp(char *a, char *b)
{
return strlen(a) > strlen(b) ? 1 : 0;
}


运行结果:
Segmentation fault (core dumped)
请问哪里错了?
...全文
453 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_28839381 2015-07-20
  • 打赏
  • 举报
回复
引用 9 楼 king191923157 的回复:
[quote=引用 8 楼 qq_28839381 的回复:] [quote=引用 6 楼 a1009563517 的回复:] 第10行scanf段错误
引用 6 楼 a1009563517 的回复:
第10行scanf段错误
原因是什么,为什么改成数组就不会出错?[/quote] 给参数赋值要有存储空间 char * 只是一个指针 ,没有指向地址 用数组是申请了 一个数组长度大小的空间,输入时数据是存在自己申请的内存 要用char * 可以 char *p= new char[XXXX]; 不用的时候再delete [/quote]谢谢,明白了
king191923157 2015-07-20
  • 打赏
  • 举报
回复
引用 8 楼 qq_28839381 的回复:
[quote=引用 6 楼 a1009563517 的回复:] 第10行scanf段错误
引用 6 楼 a1009563517 的回复:
第10行scanf段错误
原因是什么,为什么改成数组就不会出错?[/quote] 给参数赋值要有存储空间 char * 只是一个指针 ,没有指向地址 用数组是申请了 一个数组长度大小的空间,输入时数据是存在自己申请的内存 要用char * 可以 char *p= new char[XXXX]; 不用的时候再delete
qq_28839381 2015-07-20
  • 打赏
  • 举报
回复
引用 6 楼 a1009563517 的回复:
第10行scanf段错误
引用 6 楼 a1009563517 的回复:
第10行scanf段错误
原因是什么,为什么改成数组就不会出错?
brookmill 2015-07-20
  • 打赏
  • 举报
回复
引用 4 楼 qq_28839381 的回复:
[quote=引用 1 楼 brookmill 的回复:] char *a, *b; 改成 char a[128], b[128];
那我的代码为什么会报错?原因是什么?[/quote] 搜一下”野指针“
浪里狼 2015-07-20
  • 打赏
  • 举报
回复
第10行scanf段错误
赵4老师 2015-07-20
  • 打赏
  • 举报
回复
进程意外退出会在当前目录下产生‘core’文件或形如‘core.数字’的文件比如‘core.1234’ 使用命令 gdb 运行程序名 core或core.数字 进入gdb然后使用bt命令 可以查看进程意外退出前函数调用的堆栈,内容为从上到下列出对应从里层到外层的函数调用历史。 如果进程意外退出不产生core文件,参考“ulimit -c core文件最大块大小”命令
qq_28839381 2015-07-20
  • 打赏
  • 举报
回复
引用 1 楼 brookmill 的回复:
char *a, *b; 改成 char a[128], b[128];
那我的代码为什么会报错?原因是什么?
qq_28839381 2015-07-20
  • 打赏
  • 举报
回复
引用 楼主 qq_28839381 的回复:
#include "stdio.h"
#include "string.h"
int mystrcmp(char *, char *);

int main(int argc, char const *argv[])
{
	char *a, *b;
	int i;

	scanf("%s%s", a, b);
	i = mystrcmp(a, b);
	printf("%d\n", i);

	return 0;
}

int mystrcmp(char *a, char *b)
{
	return strlen(a) > strlen(b) ? 1 : 0;
}
运行结果: Segmentation fault (core dumped) 请问哪里错了?
那我的代码报错的原因在哪里?能说明一下吗?
brookmill 2015-07-20
  • 打赏
  • 举报
回复
strcmp不是比较长度的。具体的用法、功能、源代码都很容易找到 http://blog.csdn.net/yushuai007008/article/details/7626446 http://blog.csdn.net/zhao_fu_lu/article/details/20392239
brookmill 2015-07-20
  • 打赏
  • 举报
回复
char *a, *b; 改成 char a[128], b[128];

69,371

社区成员

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

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