这个问题在这里已有答案:
在使用“gcc -ansi -Wall -pedantic conc.c”编译时,我有以下警告,我做错了,请协助
谢谢,
conc.c:在函数'main'中:conc.c:8:1:警告:控制到达非void函数的结尾[-Wreturn-type]
#include <stdio.h>
void contract(char s1[], char s2[]);
int main()
{
char s1[] = "abcd";
char s2[] = "zzzz";
contract(s1,s2);
}
void contract(char s1[], char s2[])
{
char temp = 'a';
int i = 0;
while (s1[i] != '\0')
{
temp = s1[i];
i++;
}
if (i != 2)
{
s2[0] = s1[0];
s2[1] = '-';
s2[2] = temp;
}
printf ("\n The first char string is %s \n the shorten one is %s \n",s1,s2);
}
3 回答
当使用
-ansi
(= C89)时,如果你没有返回任何东西,你就不会得到main返回0的默认行为 - 你定义了一个非void返回类型(int),现在你只需要返回一些东西 .您的main函数没有显式返回任何内容 . 最后打一个
return 0;
你应该没问题:-ansi
选项切换到ISO C90标准 . 那时候,main
函数必须返回一些东西 . 从C99开始,可以省略return语句 .