1. 程式人生 > 其它 >關於fprintf函式格式化輸出到檔案的內容在記事本中不對齊的問題

關於fprintf函式格式化輸出到檔案的內容在記事本中不對齊的問題

技術標籤:C語言學習c語言

問題:類似fprintf(fp, "%8d %8s %8d ", m, s, n);的寫法無法達到預期效果

(1)Dev C++環境下實驗

#include<stdio.h>
#include<stdlib.h>
int main()
{
    FILE * fp;
    fp = fopen("file.txt","r+");
    char s[128];
    char t[128]; 
    int m, n; 
    int i=3;
    if(fp==
NULL) { printf("cannot open file"); exit(0); } while(i--) { scanf("%d", &m); scanf("%s%d", s, &n); fprintf(fp, "%8d %8s %8d\n", m, s, n); //輸出到檔案,即寫入檔案 } rewind(fp); for(i=0;i<3;i++) { fscanf
(fp, "%d %s %d", &m, t, &n); //從檔案輸出,即讀入到t[] printf("%8d %8s %8d\n", m, t, n); //顯示到螢幕 } fclose(fp); return 0; }

編譯執行,輸入:
12 LLL 55
287 YYYYY 265
28763 LOSWNMY 923
輸出:
12 LLL 55
287 YYYYY 265
28763 LOSWNMY 923
檢查檔案file.txt:
複製貼上的結果:
12 LLL 55
287 YYYYY 265

28763 LOSWNMY 923
表面看上去的結果:
在這裡插入圖片描述
證明:寫入檔案內容正確,問題在顯示
(2)Visual Studio Code在一定配置環境下實驗
配置:
.vscode
launch.json

{
    "version": "0.2.0",
    "configurations": [

        {
            "name": "(gdb) Launch",    // 配置名稱,將會在啟動配置的下拉選單中顯示
            "type": "cppdbg",         // 配置型別,這裡只能為cppdbg
            "request": "launch",    // 請求配置型別,可以為launch(啟動)或attach(附加)
            "program": "${workspaceRoot}/${fileBasenameNoExtension}.exe",// 將要進行除錯的程式的路徑
            "args": [],                // 程式除錯時傳遞給程式的命令列引數,一般設為空即可
            "stopAtEntry": false,     // 設為true時程式將暫停在程式入口處,一般設定為false
            "cwd": "${workspaceRoot}",// 除錯程式時的工作目錄,一般為${workspaceRoot}即程式碼所在目錄
            "environment": [],
            "externalConsole": true,// 除錯時是否顯示控制檯視窗,一般設定為true顯示控制檯
            "MIMode": "gdb",
            "miDebuggerPath": "D:\\TDM-GCC-64\\bin\\gdb64.exe",// miDebugger的路徑,注意這裡要與MinGw的路徑對應
            "preLaunchTask": "g++",    // 除錯會話開始前執行的任務,一般為編譯程式,c++為g++, c為gcc
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ]
        }
    ]
}

tasks.json

{
    "version": "2.0.0",
    "command": "g++",
    "args": ["-g","${file}","-o","${fileBasenameNoExtension}.exe"], // 編譯命令引數
    "problemMatcher": {
        "owner": "cpp",
        "fileLocation": ["relative", "${workspaceRoot}"],
        "pattern": {
            "regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
            "file": 1,
            "line": 2,
            "column": 3,
            "severity": 4,
            "message": 5
        }
    }
  }

編譯執行(1)中程式碼(微改動)
改動為:
fp = fopen(“file2.txt”,“w+”);
輸入:
111 yadn 219
3216 auen 349
13 uiaskj 347
直接檢查檔案:
在這裡插入圖片描述
得出結論:問題不存在