【发布时间】:2021-11-28 19:09:45
【问题描述】:
我正在学习 C 中的文件输入/输出。但有些东西我不明白。
我正准备使用 fgets打印 [words.txt] 中的简单句子,但它不起作用。
[words.txt]如下:
This speech caused a remarkable sensation among the party.
我的代码是:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char *buffer = malloc(100);
memset(buffer, 0, 100);
FILE *fp = fopen("words.txt", "r");
fgets(buffer, sizeof(buffer), fp);
printf("%s\n", buffer);
fclose(fp);
free(buffer);
return 0;
}
输出是“这个sp”
我以为我的代码没有问题,但输出结果出乎意料。
我的意思是,
为什么没有打印出整个字符串?
另外,这个输出字符串的原因是什么?
(似乎没有迹象表明这段代码会有7个字符,即“This sp”)
【问题讨论】:
-
旁注:
memset(buffer, 0, 100);行是多余的,因为fgets会将终止的空字符写入buffer。
标签: c memset file-pointer