如何使用多个字符输出到文件

发布于 2024-10-09 08:33:57 字数 2498 浏览 3 评论 0原文

#define numeric_b '0'
#define numeric_e '9'
/** init string intervals ---*/
static char c0=numeric_b;
static char c1=numeric_b;
static char c2=numeric_b;
static char c3=numeric_b;
static char c4=numeric_b;
static char c5=numeric_b;
static char c6=numeric_b;
static char c7=numeric_b;
/** init start & end ----------------*/
static const char en = numeric_e +1;
static const char st = numeric_b +1;


void str_in(int length){
    FILE * fp = fopen("list.txt","w");

    switch(length){
        case 0:
            printf("%c\n",c0);break;
        case 1:
            printf("%c%c\n",c0,c1);break;
        case 2:
            printf("%c%c%c\n",c0,c1,c2);break;
        case 3:
            printf("%c%c%c%c\n",c0,c1,c2,c3);break;
        case 4:
            printf("%c%c%c%c%c\n",c0,c1,c2,c3,c4);break;
        case 5:
            printf("%c%c%c%c%c%c\n",c0,c1,c2,c3,c4,c5);break;
        case 6:
            printf("%c%c%c%c%c%c%c\n",c0,c1,c2,c3,c4,c5,c6);break;
        case 7:
            printf("%c%c%c%c%c%c%c%c\n",c0,c1,c2,c3,c4,c5,c6,c7);break;
    }

    fclose(fp);
}
void permute(int length){

    while(c0<=en){
        str_in(length);
        c0++;
        if(c0==en && length==0){break;}
        if(c0==en){
            c0=st;
            c1++;
            if(c1==en && length==1){break;}
            if(c1==en){
                c1=st;
                c2++;
                if(c2==en && length==2){break;}
                if(c2==en){
                    c2=st;
                    c3++;
                    if(c3==en && length==3){break;}
                    if(c3==en){
                        c3=st;
                        c4++;
                        if(c4==en && length==4){break;}
                        if(c4==en){
                            c4=st;
                            c5++;
                            if(c5==en && length==5){break;}
                            if(c5==en){
                                c5=st;
                                c6++;
                                if(c6==en && length==6){break;}
                                if(c6==en){
                                    c6=st;
                                    c7++;
                                    if(c7==en && length==7){break;}
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
#define numeric_b '0'
#define numeric_e '9'
/** init string intervals ---*/
static char c0=numeric_b;
static char c1=numeric_b;
static char c2=numeric_b;
static char c3=numeric_b;
static char c4=numeric_b;
static char c5=numeric_b;
static char c6=numeric_b;
static char c7=numeric_b;
/** init start & end ----------------*/
static const char en = numeric_e +1;
static const char st = numeric_b +1;


void str_in(int length){
    FILE * fp = fopen("list.txt","w");

    switch(length){
        case 0:
            printf("%c\n",c0);break;
        case 1:
            printf("%c%c\n",c0,c1);break;
        case 2:
            printf("%c%c%c\n",c0,c1,c2);break;
        case 3:
            printf("%c%c%c%c\n",c0,c1,c2,c3);break;
        case 4:
            printf("%c%c%c%c%c\n",c0,c1,c2,c3,c4);break;
        case 5:
            printf("%c%c%c%c%c%c\n",c0,c1,c2,c3,c4,c5);break;
        case 6:
            printf("%c%c%c%c%c%c%c\n",c0,c1,c2,c3,c4,c5,c6);break;
        case 7:
            printf("%c%c%c%c%c%c%c%c\n",c0,c1,c2,c3,c4,c5,c6,c7);break;
    }

    fclose(fp);
}
void permute(int length){

    while(c0<=en){
        str_in(length);
        c0++;
        if(c0==en && length==0){break;}
        if(c0==en){
            c0=st;
            c1++;
            if(c1==en && length==1){break;}
            if(c1==en){
                c1=st;
                c2++;
                if(c2==en && length==2){break;}
                if(c2==en){
                    c2=st;
                    c3++;
                    if(c3==en && length==3){break;}
                    if(c3==en){
                        c3=st;
                        c4++;
                        if(c4==en && length==4){break;}
                        if(c4==en){
                            c4=st;
                            c5++;
                            if(c5==en && length==5){break;}
                            if(c5==en){
                                c5=st;
                                c6++;
                                if(c6==en && length==6){break;}
                                if(c6==en){
                                    c6=st;
                                    c7++;
                                    if(c7==en && length==7){break;}
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

抽个烟儿 2024-10-16 08:33:57

抱歉@zartag,但这是一些严重混淆的代码。请在一段中告诉我们您想要做什么以及您认为您的代码正在做什么。

关于问题标题(“输出到文件”),我发现您的代码最明显的错误是您使用的是 printf 而不是 fprintf。它们的行为几乎相同,除了 printf 打印到标准输出,而 fprintf 打印到文件流(例如,打印到 list.txt)。请参阅有关 fprintf 的文档。在你的情况下,它应该是

FILE * fp = fopen("list.txt","w");

switch(length){
    case 0:
        fprintf(fp, "%c\n",c0);break;
    ..snip

但严重的是,代码迫切需要重构(例如,看起来整个 switch 块可以用 for 循环替换)。当您在这里提出问题时,请给我们提供比代码列表和问题标题更多的内容。

Sorry @zartag but this is some seriously obfuscated code. Please just tell us in a paragraph what you're trying to do and what you think your code is doing.

The most obvious thing I can see wrong with your code with respect to the question title ("output to a file") is that you are using printf instead of fprintf. They behave almost identically, except that printf prints to standard output, and fprintf prints to a file stream (e.g. to your list.txt). See the documentation on fprintf. In your case it should be

FILE * fp = fopen("list.txt","w");

switch(length){
    case 0:
        fprintf(fp, "%c\n",c0);break;
    ..snip

But seriously that code is in dire need of refactoring (e.g. it looks like the whole switch block can be replaced with a for loop). And please, when you ask a question here, give us a little more to go on than a code listing and question title.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文