简单的C文本扫描和打印

时间:2015-01-26 20:25:31

标签: c file printf scanf text-editor

我正在写一个非常简单的编辑器。我有它,所以程序从stdin读取,然后立即打印到stdout(见下面的代码)。我想要一个将接收文件的程序,然后根据命令打印或向文件附加更多文本。在阅读相关问题后,我仍然感到困惑。我是否同时使用scanf读取文件然后使用printf打印到同一个文件中?非常感谢任何澄清。

#include <stdio.h>

#define MAX_LINES 10

char text[MAX_LINES][MAX_LINES];


int main(void){
    FILE *infile;
    infile = fopen("file.txt", "w");

    //check for file
    if(infile==NULL){
        puts("Error--no file found");
        }


    int count, x, y;
    printf("Enter to quit the program.\n");

    for(count=1; count<MAX_LINES+1; count++){
        printf("%d: ", count);
        fgets(text[count], MAX_LINES, stdin);

    }

    for(x=0; x<count; x++){
        for(y=0;text[x][y];y++){
            putchar(text[x][y]);}
        putchar('\n');
    }
    fclose(infile);
    return 0;
 //end program
}

1 个答案:

答案 0 :(得分:0)

您的程序没有&#34;从stdin&#34;读取,它从命名文件中读取,但是,不会写入该文件。

这是另一个混​​乱

char text[MAX_LINES][MAX_LINES];

这会更好

#define MAX_LINES   10
#define MAX_LENGTH  1000
...
char text[MAX_LINES][MAX_LENGTH];

接下来,看看这个循环

for(count=1; count<MAX_LINES+1; count++)

这将忽略数组的第0个元素并超出最后一个。它应该是

for(count=0; count<MAX_LINES; count++)

这适用于stdin,但如果文件是已打开的磁盘文件,请说infile,您应检查读取是否到达文件末尾

fgets(text[count], MAX_LINES, infile);

并替换为

if (fgets(text[count], MAX_LENGTH, infile) == NULL)
    break;

您的评论问题是否有办法从infile读取并将文本添加到infile?是的但它不可行,因为@JonathanLeffler写了&#34;准备首先是一个新文件&#34;