【发布时间】:2017-11-05 09:59:41
【问题描述】:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define OS_TYPE "/proc/sys/kernel/ostype"
#define OS_RELEASE "/proc/sys/kernel/osrelease"
#define V_BUFF 30
static const char * get_value(const char * file_path)
{
static char value[V_BUFF];
FILE *fd;
memset(value, 0, sizeof(value));
if ((fd = fopen(file_path, "r")) == NULL) {
fputs("Fopen function error.\n", stderr);
exit(EXIT_FAILURE);
}
while (fgets(value, V_BUFF, fd) == NULL) {
fputs( "Fscanf function error.\n", stderr);
exit(EXIT_FAILURE);
}
fclose(fd);
return value;
}
int main(void) {
fprintf(stdout, "%s%s", get_value(OS_TYPE), get_value(OS_RELEASE));
return EXIT_SUCCESS;
}
哪里出错了? 为什么结果r一样?
如果在while 或while 之外添加fflush,结果也相同。
请帮帮我,告诉我什么原因。 谢谢!
【问题讨论】:
-
请发布您的代码;不是它的链接。 :)
-
把它分成两个
fprintfs。 -
while (fgets(value, V_BUFF, fd) == NULL)看起来很可疑 -
@BLUEPIXY 出于某种原因,我需要这个。
-
@GOLDEN_gun 不能同时为不同的目的使用相同的内存。