|
10鱼币
下面这段C语言代码是仿写strcmp函数,我在strcmp中写了输出语句,但是执行之后没有任何输出结果。
debug的时候也直接跳过调用函数的那一行,看起来就像程序忽略了那一行一样
如果我把调用函数的那一行赋值给一个变量,程序就能正常执行。
我目前猜想是C语言在自定义函数中使用printf函数可能会出问题,但是不太了解,请C语言大佬给我解答一下。
- //使用 fgets 函数接收用户输入的两个字符串(仅支持英文)到 str1 和 str2 中,对比 str1 和 str2,如果两个字符串完全一致,打印“完全一致”;
- //如果存在不同,打印第一处不同的位置(索引下标)
- #include <stdio.h>
- #define MAX 256
- int strcmp(char *str1, char *str2) {
- int count = 0;
- while (*str1==*str2 && *(str1+1)!='\0' && *(str2+1)!='\0') {
- str1++;
- str2++;
- count++;
- }
- if(*(str1+1)=='\0' && *(str2+1)=='\0') {
- printf("两个字符串完全一致");
- } else {
- printf("两个字符串不完全相同,第%d个字符出现不同",count+1);
- }
- return count;
- }
- int main() {
- char str1[MAX] = {'\0'}, str2[MAX] = {'\0'};
- printf("请输入第一个字符串:");
- fgets(str1, MAX, stdin);
- printf("请输入第二个字符串:");
- fgets(str2, MAX, stdin);
- //int a = strcmp(str1,str2);//使用这一行之后程序正常执行
- strcmp(str1,str2);//使用这一行,程序无任何输出
- return 0;
- }
复制代码
和库函数的名字冲突了,库函数中也有一个strcmp
- //使用 fgets 函数接收用户输入的两个字符串(仅支持英文)到 str1 和 str2 中,对比 str1 和 str2,如果两个字符串完全一致,打印“完全一致”;
- //如果存在不同,打印第一处不同的位置(索引下标)
- #include <stdio.h>
- #define MAX 256
- int my_strcmp(char *str1, char *str2) {
- int count = 0;
- while (*str1==*str2 && *(str1+1)!='\0' && *(str2+1)!='\0') {
- str1++;
- str2++;
- count++;
- }
- if(*(str1+1)=='\0' && *(str2+1)=='\0') {
- printf("两个字符串完全一致");
- } else {
- printf("两个字符串不完全相同,第%d个字符出现不同",count+1);
- }
- return count;
- }
- int main() {
- char str1[MAX] = {'\0'}, str2[MAX] = {'\0'};
- printf("请输入第一个字符串:");
- fgets(str1, MAX, stdin);
- printf("请输入第二个字符串:");
- fgets(str2, MAX, stdin);
- //int a = strcmp(str1,str2);//使用这一行之后程序正常执行
- my_strcmp(str1,str2);//使用这一行,程序无任何输出
- return 0;
- }
复制代码
|
最佳答案
查看完整内容
和库函数的名字冲突了,库函数中也有一个strcmp
|