我正在学习用 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 中的函数返回数组。您也不能分配给数组变量。您需要进行一些更改才能使工作正常进行。一种选择:
- 将
main
中的char cleanWord[30]
更改为char * cleanWord
。 - 将
clean
的签名更改为char *clean(char word[30])
- 使用
malloc
在clean
中分配目标缓冲区 - 返回指向新缓冲区的指针
- 释放
main
中的缓冲区
还有一个:
- 将
clean
的签名更改为void clean(char word[30], char cleanWord[30])
- 在
clean
中操作传入的指针而不是本地数组 - 将
main
中的调用更改为clean(word, cleanWord)
。
关于c - 如何正确原型(prototype)化 C 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16952606/