簡體   English   中英

C中的讀/寫文本文件混亂

[英]confusion in read/write text file in c

我正在嘗試在.txt文件中進行一些簡單的讀/寫操作。 我編寫了一個用於讀取內容的函數,另一個用於寫回content-1的函數。

例如,“ counter.txt”中的內容為20。完成我的代碼后,我想控制台輸出應顯示為:

現在的索引是:20

現在的索引是:19

但這表示20和0,我不明白為什么。 謝謝你的幫助!

#include <stdio.h>
#include <stdlib.h>

int read_data() {
    FILE *fptr;
    char *s;
    fptr = fopen("counter.txt","r");
    if (!fptr) {
        printf("fail to open..\n");
        exit(1);
    }

    fgets(s,25,fptr);
    fclose(fptr);

    return atoi(s);
}

void write_data(char *s) {
    FILE *fptr;
    fptr = fopen("counter.txt","w");
    if (!fptr) {
        printf("fail to open..\n");
        exit(1);
    }

    fputs(s,fptr);
    fclose(fptr);
}

int main(void) {
    char index_str[5];
    int index = read_data();
    printf("index now is:%d\n", index);
    sprintf(index_str,"%d",index-1);
    write_data(index_str);

    index = read_data();
    printf("index now is:%d\n", index);
    sprintf(index_str,"%d",index-1);
    write_data(index_str);
    return 0;
}

read_data() ,替換

char *s;

char s[200];

並且您將有一個有效s 這會在堆棧上分配200個字節,您( fgets() )可以安全地在其中寫入內容並使用它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM