我被困在 c: 的大学项目中
char ID[10],tipo[10],origen[50],destino[50],hora_salida[5],hora_llegada[5];
int duracion;
float precio;
FILE *fp;
chdir("BASEDATOS");
fp=fopen(nombreArchivo,"rt");
fseek(fp,228*sizeof(char),SEEK_SET);
setlocale(LC_CTYPE,"spanish");
gotoxy(1,1);
fscanf(fp,"%s",ID);
fscanf(fp,"%s",tipo);
fscanf(fp,"%s",origen);
fscanf(fp,"%s",destino);
printf("%s\n",destino);
fscanf(fp,"%s",hora_salida);
printf("%s\n",destino);
(函数 Gotoxy() 按预期工作,不与变量或 txt 文件交互)
所以我在项目中遇到了这个特定函数的问题,我需要读取 .txt 文件的一些字符串,当我扫描“destino”变量时就会出现问题。由于某种原因,当我扫描下一个字符串(hora_salida)时,尽管我根本没有使用变量“destino”,但值会发生变化。
txt 文件的第一行格式如下:
请注意,我使用 fseek 跳过前三行,这些行没有用。
代码的结果如下:
Madrid-Chamartín\n
(blank space)
因此 destino 首先获得所需的值,但随后变为空白。
最佳答案
hora_salida
和 hora_llegada
不够大。这些字段有 5 个字符,因此您需要 6 个字节来允许空终止符。
char hora_salida[6], hora_llegada[6];
因此,您会因缓冲区溢出而导致未定义的行为。
关于c - 从 .txt 读取的字符串在 C 中无明显原因被重新定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47164695/