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 ");
相反。
我的代码导出了一个 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 ");
相反。