第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

在C中,我應(yīng)該如何閱讀文本文件并打印所有字符串

在C中,我應(yīng)該如何閱讀文本文件并打印所有字符串

C
一只甜甜圈 2019-09-20 16:04:00
我有一個(gè)名為的文本文件 test.txt我想編寫一個(gè)可以讀取此文件并將內(nèi)容打印到控制臺(tái)的C程序(假設(shè)該文件僅包含ASCII文本)。我不知道如何獲取我的字符串變量的大小。像這樣:char str[999];FILE * file;file = fopen( "test.txt" , "r");if (file) {    while (fscanf(file, "%s", str)!=EOF)        printf("%s",str);    fclose(file);}大小999不起作用,因?yàn)榉祷氐淖址甪scanf可能大于該值。我怎么解決這個(gè)問題?
查看完整描述

3 回答

?
一只斗牛犬

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超2個(gè)贊

最簡(jiǎn)單的方法是讀取一個(gè)字符,并在閱讀后立即打?。?/p>


int c;

FILE *file;

file = fopen("test.txt", "r");

if (file) {

    while ((c = getc(file)) != EOF)

        putchar(c);

    fclose(file);

}

c在int上面,因?yàn)镋OF是負(fù)數(shù),而平原char可能是unsigned。


如果要以塊的形式讀取文件,但沒有動(dòng)態(tài)內(nèi)存分配,則可以執(zhí)行以下操作:


#define CHUNK 1024 /* read 1024 bytes at a time */

char buf[CHUNK];

FILE *file;

size_t nread;


file = fopen("test.txt", "r");

if (file) {

    while ((nread = fread(buf, 1, sizeof buf, file)) > 0)

        fwrite(buf, 1, nread, stdout);

    if (ferror(file)) {

        /* deal with error */

    }

    fclose(file);

}

上面的第二種方法實(shí)質(zhì)上是如何使用動(dòng)態(tài)分配的數(shù)組讀取文件:


char *buf = malloc(chunk);


if (buf == NULL) {

    /* deal with malloc() failure */

}


/* otherwise do this.  Note 'chunk' instead of 'sizeof buf' */

while ((nread = fread(buf, 1, chunk, file)) > 0) {

    /* as above */

}

fscanf()使用%sas格式的方法會(huì)丟失有關(guān)文件中空格的信息,因此不會(huì)將文件復(fù)制到stdout。


查看完整回答
反對(duì) 回復(fù) 2019-09-20
?
慕碼人2483693

TA貢獻(xiàn)1860條經(jīng)驗(yàn) 獲得超9個(gè)贊

而是直接將字符打印到控制臺(tái)上,因?yàn)槲谋疚募赡芊浅4?,您可能需要大量?jī)?nèi)存。


#include <stdio.h>

#include <stdlib.h>


int main() {


    FILE *f;

    char c;

    f=fopen("test.txt","rt");


    while((c=fgetc(f))!=EOF){

        printf("%c",c);

    }


    fclose(f);

    return 0;

}


查看完整回答
反對(duì) 回復(fù) 2019-09-20
  • 3 回答
  • 0 關(guān)注
  • 637 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)