作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是一个 C 函数的代码,如果字符串 s1 在字典中出现在字符串 s2 之前,则返回 1;如果 s2 出现在 s2 之前,则返回 -1;如果它们相同,则返回 0。
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
int strcmp_ign_case(char *s1, char *s2){
char *s1Copy;
char *s2Copy;
char *s1Copy3 = s1Copy;
char *s2Copy3 = s2Copy;
char *s1Copy2 = s1;
char *s2Copy2 = s2;
while(*s1Copy2 != '\0'){
*s1Copy3 = *s1Copy2;
*s1Copy3 = tolower(*s1Copy3);
s1Copy3++;
s1Copy2++;
}
*s1Copy3 = '\0';
while(*s2Copy2 != '\0'){
*s2Copy3 = *s2Copy2;
*s2Copy3 = tolower(*s2Copy3);
s2Copy3++;
s2Copy2++;
}
*s2Copy3 = '\0';
while((*s1Copy != '\0') || (*s2Copy != '\0')){
if(*s1Copy > *s2Copy){
return 1;
} else if(*s1Copy < *s2Copy){
return -1;
} else {
s1Copy++;
s2Copy++;
}
}
if((*s1Copy == '\0') && (*s2Copy == '\0')){
return 0;
}
}
我不明白代码有什么问题。请帮助我理解这里的错误。谢谢!
这是我用来测试它的主要内容:
void main(){
char *a1 = "hello";
char *a2 = "hell";
char *a3 = "world";
printf("strcmp_ign_case1: %d\n", strcmp_ign_case(a1,a2));
printf("strcmp_ign_case2: %d\n", strcmp_ign_case(a1,a3));
printf("strcmp_ign_case3: %d\n", strcmp_ign_case(a2,a3));
}
最佳答案
查看评论:
int strcmp_ign_case(char *s1, char *s2){
char *s1Copy; // uninitialized pointer
char *s2Copy;
char *s1Copy3 = s1Copy; // copy of uninitialized pointer
char *s2Copy3 = s2Copy;
char *s1Copy2 = s1;
char *s2Copy2 = s2;
while(*s1Copy2 != '\0'){
*s1Copy3 = *s1Copy2; // dereferenced uninitialized pointer (crash)
关于代码不起作用。不断出现段错误(核心已转储),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36108414/
我正在为我的应用程序使用 Tank-Auth。我唯一的问题是激活和重置帐户密码。 用于登录、注册、注销;我对这些代码没有问题; $route['login'] = "/auth/login"; $ro
我是一名优秀的程序员,十分优秀!