【发布时间】:2014-05-10 01:34:19
【问题描述】:
char *My_Time(FILE *prnt)
{
time_t raw_Time = time(0);
struct tm *info;
char myt_Time[80];
info = localtime(&raw_Time);
return asctime(info);// Returns the time i want
}
int Crte_acclg (FILE *crte_Fp1)
{
char *my_Currtime;
my_Currtime = My_Time(crte_Fp1); // succesfully stores the time i want without having a array of chars?
fprintf(crte_Fp1,"File Created: %s",my_Currtime);
return 1;
}
所以在上面的代码中,我要求我的时间返回当前时间,并将它存储在一个 char * 中。我的问题是这行代码是如何工作的,因为我正在取回一串字符,那么为什么当我指向一个字符位置时它能够给我完整的字符串?
【问题讨论】:
-
字符串是以
\0结尾的字符数组。在 C++ 中还有一个string类。 -
你得到的是一个指向字符串第一个字符的指针。当您打印一个字符串时,该函数会对该字符串进行迭代,直到找到
\0。 -
您是说
Crte_acclg中的fprintf调用不输出完整的时间/日期字符串吗?你怎么知道,你怎么检查?如果您在程序运行时检查文件,则可能是输出尚未刷新到实际文件中。 -
@Joachim Pileborg 不,他混淆了
char和char* -
@JoachimPileborg 确实如此,但因为 asctime ( info) 是一个字符串,编译器会在内存中排列数据,因此将 * 传递到 char 的末尾,可以让我阅读所有存储的字符?