如何解决为什么我使用 'fgets' 会导致结构指针的 char 数组属性填充?
我正在 Linux 64 位机器上编译。
运行 gcc struct-string-gates.c && ./a.out
提供以下意外输出:
Val: '0',Name: '123 -> x'
但是,如果我注释掉 while(fgets..
循环,我会得到以下预期输出:Val: '0',Name: ''
我是否在某处造成了溢出?
gates.txt (UTF-8)
123 -> x
struct-string-gates.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define FILE_NAME "gates.txt"
#define MAX_LINE_LEN 100
#define VAR_NAME_LEN 5
char **readLines(char *fileName) {
FILE *fp = fopen(fileName,"r");
char *buff = malloc(MAX_LINE_LEN * sizeof(char));
// Including the following while loop seems to cause the issue
while (fgets(buff,MAX_LINE_LEN,fp) != NULL) {
// Empty fn
}
char **lines = NULL;
fclose(fp);
free(buff);
return lines;
}
typedef struct Gate Gate;
struct Gate {
char name[VAR_NAME_LEN];
int output;
};
int main() {
char **lines= readLines(FILE_NAME);
Gate *newGate = malloc(sizeof(Gate));
printf("Val: '%d',Name: '%s'\n",newGate->output,newGate->name);
return 0;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。