c 用fopen函数以w模式打开,再fputs写了两句话,但多打印出很多“屯”?

新手上路,请多包涵
// ReadALine.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <iostream>
#include <stdio.h>
using namespace std;
char *ReadALine(char *buf, int n, FILE *fp)
{
    char ch;
    int i = 0;
    ch = fgetc(fp);
    while (ch != EOF)
    {
        if ((ch == '\n') || (ch == '\r'))
        {
            buf[i++] = '\0';
            break;
        }
        else if (i == n - 1)
        { 
            buf[i] = '\0';
            break;

        }
        else
        {
            buf[i++] = ch;
        }
    }
    return buf;
}

int _tmain(int argc, _TCHAR* argv[])
{
    char buf[30];
    memset(buf, 0, sizeof(buf));
    char ch;
    FILE *fp = fopen("C:\\test.txt", "w");
    if (fp == NULL)
    {
        return 0;
        fclose(fp);
    }
    fputs("Hello,world!\n", fp);
    fputs("Hello,UESTC!\n", fp);
    cout << "文件内容:" << endl;
    while ((ch = fgetc(fp) != EOF))
    {
        cout << ch;
    }
    cout << endl;
    fclose(fp);

    FILE *testfp = fopen("C:\\test.txt", "r");


    ReadALine(buf, 20, testfp);
    cout << buf;
    cout << endl;
    fclose(testfp);
    
    system("pause");
    return 0;
}

图片描述

阅读 2.4k
1 个回答
FILE *fp = fopen("C:\\test.txt", "w");
    while ((ch = fgetc(fp) != EOF))
    {
        cout << ch;
    }

你用 w 模式读取文件内容,错了吧~

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进