c - 如何正确原型(prototype)化 C 函数

标签 c

我正在学习用 C 语言制作原型(prototype)的概念,但是我在正确语法方面遇到了困难。我正在编写一个函数来从 C 字符串中去除所有非字母字符

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

char[30] clean(char[30] );

int main()
{
    char word[30] = "hello";
    char cleanWord[30];
    cleanWord = clean(word);
    return 0;
}


char[30] clean(char word[30])
{
    char cleanWord[30];
    int i;

    for(i=0;i<strlen(word);i++)
        if ( isalpha(word[i]) )
            cleanWord[i]=word[i];

    cleanWord[i]='\0';

    return cleanWord;
}

如何正确制作函数原型(prototype)?阻止我的程序编译的其他语法错误是什么?

最佳答案

您的问题不在于函数原型(prototype)(又名前向声明)。您只是不能从 C 中的函数返回数组。您也不能分配给数组变量。您需要进行一些更改才能使工作正常进行。一种选择:

  1. main 中的 char cleanWord[30] 更改为 char * cleanWord
  2. clean 的签名更改为 char *clean(char word[30])
  3. 使用mallocclean 中分配目标缓冲区
  4. 返回指向新缓冲区的指针
  5. 释放main中的缓冲区

还有一个:

  1. clean 的签名更改为 void clean(char word[30], char cleanWord[30])
  2. clean 中操作传入的指针而不是本地数组
  3. main 中的调用更改为 clean(word, cleanWord)

关于c - 如何正确原型(prototype)化 C 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16952606/

相关文章:

C程序: Input conditon expression through file

c++ - 三元和逗号运算符

C 字符串数组 strtok()

c - 如何计算模除法

c++ - 最快的加密安全随机数生成器

c - 在 Gtk+2.0 应用程序中使用 pthreads 的安全性

c - 如何在 C 中使用 UNIX 终端输入重定向?

c - 链接文件而不是链接列表

c - c sizeof() 函数是否依赖于主机?

将 Lua 文件对象转换为 C 文件*