C中的函数没有返回正确的指针类型?

Mapplejacks

我正在用C语言编写块密码程序,似乎我的所有函数都没有返回正确的指针类型,因此我的代码甚至无法编译。

一个例子是这样的:

char *evenString(char * inText)   /*takes a string of text.  If it has an odd number of     chars, it adds ASCII char 19 as padding.*/
{
  int inputLength = strlen(inText);
  char* evenText; /*pointer to character array*/  
  if(inputLength%2) /*If even, pad*/
    {
      evenText = (char*) malloc(sizeof(char) * (inputLength+2)); 
      strcpy(evenText,inText);
      evenText[inputLength] = FILLER_CHARACTER;
    }
  else
    {    
      evenText = (char*) malloc(sizeof(char) * (inputLength+1));
      strcpy(evenText,inText);
    }

  return evenText; /*which should be a char*, right?*/

}

当我在main中调用它时,调用看起来像这样:

char *plainText =  evenString(inputText);

编译器会提出以下异常:

block_cypher.c:28:22: warning: initialization makes pointer from integer without a cast [enabled by default]
char *plainText =  evenString(inputText);

block_cypher.c: At top level:
block_cypher.c:38:7: error: conflicting types for ‘evenString’
char *evenString(char * inText)

block_cypher.c:28:22: note: previous implicit declaration of ‘evenString’ was here
char *plainText =  evenString(inputText);

block_cypher.c: In function ‘evenString’:
block_cypher.c:45:26: warning: incompatible implicit declaration of built-in function    ‘malloc’ [enabled by default]
   evenText = (char*) malloc(sizeof(char) * (inputLength+2)); 

block_cypher.c:53:26: warning: incompatible implicit declaration of built-in function  ‘malloc’ [enabled by default]
   evenText = (char*) malloc(sizeof(char) * (inputLength+1));

我所有的函数都是这样,它们都返回int *或char *类型的指针。我什至无法编译,所以我什至不知道从哪里开始修复此问题。任何对此的见解将不胜感激。感谢您的时间!

更新:谢谢大家!我遵循了您的所有建议:

  1. 我插入了函数原型,该原型立即解决了许多错误。
  2. 包括我 ; 我不知道我在想什么,但是最近我一直在Java IDE中工作,却忘记了很多有关C的重要知识。
  3. 如建议的那样,我停止了强制转换malloc()。我的C教授告诉我们,由于malloc返回VOID *指针,因此始终强制转换它。

谢谢你们!

皮特·斯科特尼克

以下错误:

block_cypher.c:28:22: note: previous implicit declaration of ‘evenString’ was here
//                                   ^^^^^^^^
char *plainText =  evenString(inputText);

表示在evenString调用函数的位置,编译器不知道该函数的签名,这通常意味着您缺少适当的头文件。结果,编译器会推断出自己的声明(基于提供的参数),其返回类型默认为 int

int evenString(char* inText);

这是错误源于:

warning: initialization makes pointer from integer without a cast [enabled by default]
//                                    ^^^^ ^^^^^^^

阅读所有错误/警告,您似乎首次使用功能后就对其进行了定义您应该在首次使用该功能之前声明该功能,或者将整个功能定义移到翻译单元的顶部(至少在第一次使用该功能之前)。evenString

那是:

block_cypher.c: At top level:
block_cypher.c:38:7: error: conflicting types for ‘evenString’
//             ^^           ^^^^^^^^^^^
char *evenString(char * inText)

block_cypher.c:28:22: note: previous implicit declaration of ‘evenString’ was here
//             ^^  
char *plainText =  evenString(inputText);

表示您已evenString(inputText);在第28调用int该函数,在该行编译器将返回类型推导为,然后才在第38行声明/定义该函数,这已经太晚了(至少没有事先声明)。

为了使其正常工作,请尝试在28之前添加声明

char* evenString(char* inText);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

有没有办法在不使用void指针的情况下返回C函数中的任何类型?

来自分类Dev

C 中函数指针的正确值类型

来自分类Dev

如何在emacs中为没有返回类型的函数获取正确的缩进?

来自分类Dev

如何使用C中没有参数且没有返回类型的函数更新变量

来自分类Dev

如何使用C中没有参数且没有返回类型的函数来更新变量

来自分类Dev

具有不同返回类型的函数指针C

来自分类Dev

函数不使用 C 中的指针返回正确的值

来自分类Dev

函数在递归函数中没有正确返回?

来自分类Dev

指针没有返回正确的值

来自分类Dev

函数返回指向C中数组类型的指针

来自分类常见问题

C函数的正确返回类型?

来自分类Dev

C函数的正确返回类型?

来自分类Dev

没有函数的返回类型?

来自分类Dev

没有参数中的指针的函数指针

来自分类Dev

没有参数类型的函数指针?

来自分类Dev

具有不同返回类型的函数指针

来自分类Dev

在C ++中返回指针的函数

来自分类Dev

如何从具有int和struct类型的指针的函数中解引用指针返回的地址?

来自分类Dev

Oarg中没有args和返回类型的函数

来自分类Dev

没有在C中指定返回类型的函数

来自分类Dev

没有返回类型的C函数的不确定行为

来自分类Dev

为什么在C ++中返回类型不能是函数类型而是函数指针?

来自分类Dev

指针返回类型的函数

来自分类Dev

从C#调用C dll中的函数,该函数将某种类型的指针返回到函数指针

来自分类Dev

DCOUNT函数没有返回正确的结果

来自分类Dev

函数 EXTRACT() 没有返回正确的结果

来自分类Dev

素数函数没有返回正确的结果

来自分类Dev

在不使用指针的情况下,在C ++中返回“无效值”类型的正确方法是什么?

来自分类Dev

指针在没有地址的函数中的使用

Related 相关文章

  1. 1

    有没有办法在不使用void指针的情况下返回C函数中的任何类型?

  2. 2

    C 中函数指针的正确值类型

  3. 3

    如何在emacs中为没有返回类型的函数获取正确的缩进?

  4. 4

    如何使用C中没有参数且没有返回类型的函数更新变量

  5. 5

    如何使用C中没有参数且没有返回类型的函数来更新变量

  6. 6

    具有不同返回类型的函数指针C

  7. 7

    函数不使用 C 中的指针返回正确的值

  8. 8

    函数在递归函数中没有正确返回?

  9. 9

    指针没有返回正确的值

  10. 10

    函数返回指向C中数组类型的指针

  11. 11

    C函数的正确返回类型?

  12. 12

    C函数的正确返回类型?

  13. 13

    没有函数的返回类型?

  14. 14

    没有参数中的指针的函数指针

  15. 15

    没有参数类型的函数指针?

  16. 16

    具有不同返回类型的函数指针

  17. 17

    在C ++中返回指针的函数

  18. 18

    如何从具有int和struct类型的指针的函数中解引用指针返回的地址?

  19. 19

    Oarg中没有args和返回类型的函数

  20. 20

    没有在C中指定返回类型的函数

  21. 21

    没有返回类型的C函数的不确定行为

  22. 22

    为什么在C ++中返回类型不能是函数类型而是函数指针?

  23. 23

    指针返回类型的函数

  24. 24

    从C#调用C dll中的函数,该函数将某种类型的指针返回到函数指针

  25. 25

    DCOUNT函数没有返回正确的结果

  26. 26

    函数 EXTRACT() 没有返回正确的结果

  27. 27

    素数函数没有返回正确的结果

  28. 28

    在不使用指针的情况下,在C ++中返回“无效值”类型的正确方法是什么?

  29. 29

    指针在没有地址的函数中的使用

热门标签

归档