- 论坛徽章:
- 0
|
在 c专家编程书中48页,有端程序/* 将源文件的timestamp转换为表示当地格式日期的字符串*/
char *localized_time(char *filename)
{
struct tm *tm_ptr;
struct stat stat_block;
char buffer[120];
/*获得源文件的timestamp,格式为 time_t*/
stat(file,&stat_block);
/*把unix 的time_t转换为tm结构,里边保存当地时间*/
tm_ptr=localtime(&stat_block,st_time)
/*把tm结构转换成以当地时间*/
strftime(buffer,sizeof(buffer),"%a %b %e %T %Y",tm_ptr);
return buffer;
}
书上说return buffer这行错误, buffer是一个自动分配内存的数组,是该函数的局部变量。控制流离开声明自动变量的范围时,自动变量便自动失效。
但是我们调用一个函数,都要先声明的啊,那就意味着这个程序没有问题啊!
比如一个简单例子:
int add(int a,int b) {
int c;
c=a+b;
return c;
}
#include<stdio.h>
int add(int a,int b);
int main(void) {
int a,b,d;
a=1;
b=2;
d=add(a,b);
printf("%d\n",d);
}
这样绝对可以得到返回值的。
大家把我分析下这个问题原因啊, |
|