关于c语言文件操作的小问题

如图,一个文件含有带回车的字符串,然后按照这个格式输出?该怎么做呢?碰到一个括号缩进两个空格图片说明

题目要求如图图片说明图片说明图片说明

图片说明

是从文件读取字符串输出到控制台,还是从控制台输入字符串然后输出到文件?

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

void main()
{
    FILE *fp;
    char ch;
    int tab = 0;//缩进数量

    fp = fopen("my.txt", "rt");

    while (!feof(fp))
    {
        ch = getc(fp);
        if (ch == '(')
        {
            tab++;
            printf("%c\n", ch);
            for (int i = 0;i < tab;i++)
            {
                printf("  ");
            }
        }
        else if (ch ==')')
        {
            tab--;
            printf("\n");
            for (int i = 0;i < tab;i++)
            {
                printf("  ");
            }
            printf("%c\n", ch);
            for (int i = 0;i < tab;i++)
            {
                printf("  ");
            }
        }
        else if(ch=='[')
        {
            tab++;
            printf("%c\n", ch);
            for (int i = 0;i < tab;i++)
            {
                printf("  ");
            }
        }
        else if(ch==']')
        {
            tab--;

            printf("\n");
            for (int i = 0;i < tab;i++)
            {
                printf("  ");
            }
            printf("%c\n", ch);
        }
        else if(ch=='\n')
        {
            printf("\n");
            for (int i = 0;i < tab;i++)
            {
                printf("  ");
            }
        }
        else
        {
            printf("%c", ch);
        }
    }

    fclose(fp);
}

用getline读一行打印一行

楼主 这个是什么语言?

题主想要的是不是遇到‘[’或是‘]’就换行?
如果是的话,将从文件中读取到的内容进行字符串匹配,当匹配到‘[’就在后面加一个换行,遇到‘]’就在前面加个换行。

这样应该可以实现你要的效果吧。

楼主你要的代码,两个测试都可以通过

#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
int main(){
    FILE* fp = fopen("a.txt","r");
    int indent = 0;
    assert(fp);
    char c = fgetc(fp);
    while(!feof(fp)){
        if(c == '(' || c == '['){
            indent += 2;
            printf("%c",c);
            printf("\n");
            for(int i=0; i<indent; i++)
                printf(" ");
        }
        else if(c == ')' || c == ']'){
            indent -= 2;
            printf("\n");
            for(int i=0; i<indent; i++)
                printf(" ");
            printf("%c",c);
        }
        else if(c == '\n'){
            printf("\n");
            for(int i=0; i<indent; i++)
                printf(" ");
        }
        else
            printf("%c",c);
        c = fgetc(fp);
    }
    return 0;
}

能给分不?