乔宽 发表于 2019-7-11 15:09:10

指针函数和函数指针课后作业

封装一个 MD5 函数。第一个参数是目标字符串,用于接收运算后的 MD5 值;第二参数是源字符串,即用户输入的明文密码
#include <stdio.h>
#include <string.h>
#include "md5.h"

void md5(unsigned char *dest, unsigned char *src);

void md5(unsigned char *dest, unsigned char *src)
{
      int i;

      MD5_CTX md5;

      // 初始化
      MD5Init(&md5);
      // 传入明文字符串及其长度
      MD5Update(&md5, src, strlen((char *)src));
      // 得到加密后的字符串
      MD5Final(&md5, dest);
}

int main(void)
{
      int i;
      unsigned char src;
      unsigned char dest;

      printf("请输入密码:");
      scanf("%s", src);

      printf("你输入的密码是:%s\n", src);

      md5(dest, src);

      printf("加密后的密码是:");
      for (i = 0; i < 16; i++)
      {
                printf("%02x", dest);
      }
      putchar('\n');

      return 0;
}
错误:17:error: md5.h:No such file or directory
In function 'md5':
10: error: 'MD5_CTX' undeclared (first use in this function)

10:error :'(Each underclared identifier is reported only once

10:error :for each function it appears in.)

10:error : expected ‘ ;’ before 'md5'
我看不出错误在哪?

Krant5 发表于 2019-7-11 15:24:41

都报错头文件不存在了,还看不出来吗

乔宽 发表于 2019-7-11 15:32:44

Krant5 发表于 2019-7-11 15:24
都报错头文件不存在了,还看不出来吗

我不是添加了#include"md5.h"头文件了;
怎么还报错头文件不存在了

mqcake 发表于 2019-7-11 15:57:57

乔宽 发表于 2019-7-11 15:32
我不是添加了#include"md5.h"头文件了;
怎么还报错头文件不存在了

可能包含的目录不对;

乔宽 发表于 2019-7-11 17:03:31

mqcake 发表于 2019-7-11 15:57
可能包含的目录不对;

其实我是按小甲鱼给的课后作业里的代码打的,按理说应该没错。

df3379 发表于 2019-7-11 20:04:18

这是编译器版本不同导致的吧。我也遇到过这种情况。只需要把MD5函数封装在.c文件里,不用预加载,只需要声明一下就可以正常使用了

df3379 发表于 2019-7-11 20:15:02

#include <stdio.h>
#include <string.h>

void md5(unsigned char *dest, unsigned char *src);

int main(void)
{
      int i;
      unsigned char src;
      unsigned char dest;

      printf("请输入密码:");
      scanf("%s", src);

      printf("你输入的密码是:%s\n", src);

      md5(dest, src);

      printf("加密后的密码是:");
      for (i = 0; i < 16; i++)
      {
                printf("%02x", dest);
      }
      putchar('\n');

      return 0;
}

这是主程序部分

#include<stdio.h>
#include <string.h>

void md5(unsigned char *dest, unsigned char *src)
{
      int i;

      MD5_CTX md5;//这里有问题!MD5_CTX在之前没有定义或者声明,所以找不到对应接口

      // 初始化
      MD5Init(&md5);
      // 传入明文字符串及其长度
      MD5Update(&md5, src, strlen((char *)src));
      // 得到加密后的字符串
      MD5Final(&md5, dest);
}

MD5_CTX md5;//这里有问题!MD5_CTX在之前没有定义或者声明,所以找不到对应接口
页: [1]
查看完整版本: 指针函数和函数指针课后作业