我基本上是试图创建一个以日期和时间为名称的日志文件。这是我的代码
char logger [500];
time_t time1;
struct tm * timeinfo;
time (&time1);
timeinfo = localtime (&time1);
sprintf(logger, "TestTreiber_%d%d%d%d%d%d.log",timeinfo->tm_year+1900,timeinfo->tm_mon+1,timeinfo->tm_mday,timeinfo->tm_hour,timeinfo->tm_min,timeinfo->tm_sec);
printf("All logging during this test is done in : %s",logger);
sprintf(logger, "prot/%s",logger);//STEP 1: I encounter the error here
FILE *logFile;
logFile= fopen(logger,"w");
没有步骤1,一切都会顺利进行。它在程序所在的文件夹中创建了一个我想要的名称的日志文件。但是,当我将步骤1添加到混合中时,会出现此错误。
Segmentation Fault (core dumped)
我是Linux新手,但是我知道它与内存有关,因此我增加了分配给logger [500]的内存(以前使用255可以正常工作)。但是我似乎无法解决这个问题。我正在运行的目录中确实存在prot文件夹。请帮忙!
PS对不起,大写字母使用错误,我使用的是德语键盘。
您不应该在代码中这样做,
sprintf(logger, "prot/%s",logger);
引用sprintf的man
页面,
有些程序会不谨慎地依赖以下代码,
sprintf(buf, "%s some further text", buf);
将文字附加到
buf
。然而,该标准明确指出的结果,如果没有定义source
和destination
调用的sprintf当缓冲区重叠()的snprintf(),vsprintf中()和vsnprintf()。根据所用gcc的版本和所用的编译器选项,上述调用不会产生预期的结果。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句