C编程-导出TEXT文件时出现字符错误

C proggraming - Characters error exporting TXT file

我的代码导出了一个 TXT 文件,本应由 Excel 中的宏读取,但它以错误的方式写入了文件名。

我分配给文件的名称类似于 Lissajous Figure 08-05-21 15-19-04.txt(其中数字指的是当前的小时、日期、月份和年份)但是当 运行 代码时,文件名是 Lissajous Figure 08-05-21 15-19-04 在第一个字母前加上那个未知字符。

我会把我的代码放在下面,

#include <stdio.h>
#include <math.h>
#include <time.h>
#include <string.h>

//SOURCES
//https://austinrepp.com/how-to-write-to-a-csv-file-in-c/
//
//https://austinrepp.com/how-to-write-to-a-csv-file-in-c/

float * genUnitCircle(); 
void genLissajousFigures(float A, float a, float B, float b, float delta);

void genLissajousFigures(float A, float a, float B, float b, float delta){
   FILE * fpointer;
   char fileName[100];
   int i;
   float * circle;

   time_t timer;
   char buffer[26], line[50];
   struct tm* tm_info;

   time(&timer);
   tm_info = localtime(&timer);

   strcat(fileName, "Lissajous Figure ");
   strftime(buffer, 26, "%d-%m-%y %H-%M-%S", tm_info);
   strcat(fileName, buffer);
   strcat(fileName, ".txt");

   fpointer = fopen(fileName, "w+");   

   circle = genUnitCircle();

   for (i = 0; i <= 100; i++) {
      fprintf(fpointer, "%3.4f \n", A * sin(a * circle[i]));    
   }
   for (i = 0; i <= 100; i++) {
      fprintf(fpointer, "%3.4f \n ", B * sin(b * circle[i] + delta));    
   }
}

你的 fileName 变量被传递给 strcat(),它期望一个有效的以 0 结尾的 C 字符串作为它的第一个参数,然后被初始化为一个,导致未定义的行为(在这种情况下显示作为字符串开头的垃圾字节)。使用

strcpy(fileName, "Lissajous Figure ");

相反。