请您修复此代码中的错误我得到此错误error C2040: 'tmFunc' : 'char *()'
的间接级别与'int ()'
#include<stdio.h>
main()
{
char *tmStamp=tmFunc();
}
char *tmFunc()
{
char tmbuf[30];
struct tm *tm;
time_t ltime; /* calendar time */
ltime=time(NULL); /* get current cal time */
tm = localtime(<ime);
sprintf (tmbuf, "[%04d/%02d/%02d %02d:%02d:%02d]", tm->tm_year + 1900,
tm->tm_mon + 1, tm->tm_mday, tm->tm_hour, tm->tm_min, tm->tm_sec);
return(tmbuf);
}
答案 0 :(得分:8)
因为您在使用之前没有声明tmFunc
,所以它被隐式声明为返回int
的函数。
在使用它之前声明它:
#include<stdio.h>
char *tmFunc(); // declaration
int main()
{
char *tmStamp=tmFunc();
}
答案 1 :(得分:5)
阳离子:您正在返回本地变量的地址(tmbuf)
。
应首先将tmbuf[30];
复制到动态内存中并返回。
在*tmFunc()
之前定义了main()
函数。
我更正了你的代码:
#include<stdio.h>
#include<time.h>
#include<string.h>
#include<stdlib.h>
char *tmFunc() {
char tmbuf[30];
char *buff;
struct tm *tm;
time_t ltime; /* calendar time */
ltime=time(NULL); /* get current cal time */
tm = localtime(<ime);
sprintf (tmbuf, "[%04d/%02d/%02d %02d:%02d:%02d]", tm->tm_year + 1900,
tm->tm_mon + 1, tm->tm_mday, tm->tm_hour, tm->tm_min, tm->tm_sec);
buff = calloc(strlen(tmbuf)+1,sizeof(char));
strcpy(buff, tmbuf);
return buff;
return (buff);
}
int main()
{
char *tmStamp=tmFunc();
printf("Time & Date : %s \n", tmStamp);
free(tmStamp);
return 1;
}
这实际上是正常的:
:~$ ./a.out
[2012/12/27 18:28:53]
存在范围问题。