从键盘输入3个字符串,利用函数调用的形式,对了个字符串 比较大小,然后再次利用两数调用的形式以指针变量作为形参,数 组名作为实参进行参数传递,完成对字符串的交换,最后按由小到 大的顺序输出3个字符串。

使用Dev c++软件 编译出现问题不知道怎样修正 显示函数定义有误 求解各位

img

这代码基本上要重写了都,你对于函数的申明、定义甚至if语句的使用的理解,统统都错了。

#include <stdio.h>
#include <string.h>
int main()
{
    void mystrcmp(char *, char *); //注意,strcmp已经是库函数了,你要换一个名字
    char *p1, *p2, *p3;
    char a[100], b[100], c[100];
    p1 = &a;
    p2 = &b;
    p3 = &c;
    scanf("%s", p1);
    scanf("%s", p2);
    scanf("%s", p3);
    mystrcmp(a, b);
    mystrcmp(b, c);
    mystrcmp(a, b);
    printf("从小到大输出为:\n%s %s %s", p1, p2, p3);
    return 0;
}
void mystrcmp(char * a, char * b)
{
    char tmp[100];
    if (strcmp(a, b) > 0)
    {
        strcpy(tmp, a);
        strcpy(a, b);
        strcpy(b, tmp);
    }
}

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/7697572
  • 这篇博客你也可以参考下:生产者消费者模式保姆级教程 (阻塞队列解除耦合性) 一文帮你从C语言版本到C++ 版本, 从理论到实现 (一文足以)
  • 除此之外, 这篇博客: C/C++ 编程常见代码中的 19.定义一个带参的宏,使两个参数的值互换,并写出程序,输入两个数作为使用宏时的实参。输出已交换后的两个值。 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:
    #include<iostream>
    #include<cmath>
    #define exchange(a,b) t=a;a=b;b=t;  //相当于整段代码替换 
    
    using namespace std;
    
    int main(){
    	int a, b, t=0;
    	cin >> a >> b;
    	
    	exchange(a,b);
    	
    	cout << a << " " << b <<endl;
    }
    
  • 您还可以看一下 朱有鹏老师的朱老师C++课程第3部分3.4.模板特化与类型萃取课程中的 3.4.7.编译器匹配规则和特化的总结小节, 巩固相关知识点
  • 以下回答来自chatgpt:
    1. 问题的具体内容是如何使用Dev C++编写一个程序,实现对三个字符串的比较和交换操作,并按照由小到大的顺序输出这三个字符串。
    2. 功能是从键盘输入三个字符串,比较大小并交换,最后按照从小到大的顺序输出这三个字符串。
    3. 遇到的问题是编译错误,错误信息显示函数定义有误。
    4. 具体的错误信息不清楚,需要更多的具体信息才能确定解决方法。
    5. 如果遇到函数定义的错误,可能是函数声明和函数定义不一致导致的。可以检查函数声明和函数定义是否匹配,包括函数名、参数列表、返回值等部分。另外,还可以通过检查头文件和命名空间的使用情况,来确定是否引入了重复定义或未定义的变量和函数。最后,还可以尝试重新编译程序,查看是否还有其他的编译错误。

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^