首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C >> C 語言實例練習

C語言練習實例97:字符輸入寫入文件直到遇到#

     編輯:C 語言實例練習

C語言練習實例97:字符輸入寫入文件直到遇到#

本實例實現從鍵盤逐個讀取字符,並將其寫入用戶指定的文件中,直到輸入 # 為止。

程序分析

關鍵步驟:

  1. 提示用戶輸入目標文件名,使用 gets() 讀取(同樣建議改用 fgets())。
  2. 以寫模式打開文件,失敗則報錯退出。
  3. 調用 getchar() 吸收殘留的換行符,然後進入循環:每次調用 getchar() 讀取一字符,若為 # 則跳出,否則用 fputc() 寫入文件。
  4. 循環結束後關閉文件。

源代碼

// Created by www.runoob.com on 15/11/9.
// Copyright © 2015年 菜鳥教程. All rights reserved.
//
#include <stdio.h>
#include <stdlib.h>

int main() {
    FILE *fp = NULL;
    char filename[25];
    char ch;

    printf("輸入你要保存到的文件的名稱:\n");
    gets(filename);

    if ((fp = fopen(filename, "w")) == NULL) {
        printf("error: cannot open file!\n");
        exit(0);
    }

    printf("現在你可以輸入你要保存的一些字符,以#結束:\n");
    getchar(); // 吸收上一個換行符

    while ((ch = getchar()) != '#') {
        fputc(ch, fp);
    }

    fclose(fp);
    system("pause");
    return 0;
}

運行示例

輸入你要保存到的文件的名稱:
test.txt
現在你可以輸入你要保存的一些字符,以#結束:
www.runoob.com
#

執行完畢後,test.txt 將包含 www.runoob.com。

改進建議

  • 將 gets() 替換為 fgets(filename, sizeof(filename), stdin) 並去除尾部換行符。
  • 可增加對文件名合法性的檢查。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved