【发布时间】:2018-09-07 14:35:08
【问题描述】:
我的程序在代码块上运行良好,没有任何警告,但是当我将代码提交给hackerrank时,它显示错误
solution.c: In function ‘main’:
solution.c:21:6: error: ‘main’ is normally a non-static function [-
Werror=main]
int main()
^~~~
cc1: some warnings being treated as errors
这是我的实际代码,是关于数据类型和字符串的简单问题
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
char* concat(const char *s1, const char *s2)
{
char *result = malloc(strlen(s1) + strlen(s2)+1 ); // +1 for the null-terminator
// in real code you would check for errors in malloc here
strcpy(result, s1);
strcat(result, s2);
return result;
}
int main(){
int i=4.0,x;
double d=4.0,y;
char result[301],z[100];
char* p=result;
char s[50]="HackerRank ";
scanf("%d",&x);
scanf("%lf ",&y);
int sum1=i+x;
double sum2=d+y;
p=concat(s,z);
printf("%d\n",sum1);
printf("%lf\n",sum2);
printf("%s",p);
return 0;
}
【问题讨论】:
-
你说工作正常吗?
main中的变量z在做什么?不管怎样,这个错误信息看起来好像hackerrank软件有一个错误,你应该和他们的技术支持联系。 -
^^^ 生成 UB :(
-
是的..你需要了解@n.m.正在暗示。具有自动存储功能的变量未在 C 中初始化。您还应该查看 strlen() 的工作原理。
-
还有,可能和你的错误无关,但是你在
main()中使用后没有free()concat()的结果。