fgets汉字问题
#include<stdio.h> #include <stdlib.h> #define N 10 int main(int argc, char *argv[]) { FILE *fp; char str[N]; fp = fopen("in.txt", "r"); if (fp == NULL) { return 1; } while (!feof(fp)) { fgets(str, N, fp); printf("%s", str); //puts(str); } fclose(fp); return 0; }
in.txt
车窗外恋人相拥 还在难舍难离 汽笛声突然响起 那姑娘满眼焦急 不觉中下起雨来 在黄昏的站台 她终于上了列车 却一直望向窗外 当列车徐徐开动掠过蓝色站牌 我看见她难过的脸 如此苍白 伴随雨点敲击车窗她的泪流下来 我赶紧转过头去让我视线离开 不知是甜蜜的伤感还是无奈 天色暗了下来 人们开始了等待 我想起多年以前 像今天的画面 以为告别还会再见 哪知道一去不还
输出:车窗外恋?
讼嘤?
puts换printf则正常输出。
初步怀疑与刷新缓冲区有关。
当然fgets 的buffer size设置足够大是可以解决问题的。
希望有人解答!
Keep it simple!