c - 可执行文件的文本输出部分显示在控制台上

标签 c loops printing console dev-c++

我已经编写了一个简单的 C 程序来打印多个计算的输出,如下所示。问题是,我看不到带有预期值的输出,似乎只能部分看到输出,我不知道为什么。代码有效,没有发生编译/构建错误。我不确定这是特定于编译器(我使用 Dev C++)还是与编译器无关?

当我运行小“n”(例如 17,29,103 exc)的代码时。结果显示正确,但过了一会儿它开始不打印前几个元素。

对于 n=171,它不显示前 24 个元素。

我的代码如下;

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

int mod_exponent(int g,int m, int n);

int main(){
    int g,m,n,m1,i,t;
    g=2; n=171;

    for (m=0;m<=n;m++){
        t=mod_exponent(g,m,n);

        if(t!=-1)
            printf("%d^%d=%d mod %d\n \n", g,m,t,n) ;
    }

    return 0;  
}

int mod_exponent(int g,int m, int n){
    int s,r,m1,i,j,k,q,d[100];

    if (g<=0||m<0||n<=0){
        printf("wrong parameters\n") ;
        return -1;
    }

    m1=m;i=0;
    while(m1>=2){
        q=m1/2;
        d[i]=m1-q*2;
        m1=q; 
        i=i+1;
    }

    d[i]=m1; k=i;
    if(d[0]==1)
        r=g;

    if(d[0]==0) 
        r=1;

    s=g;
    for(i=1;i<k;i++)
        s=s*s %n;

    if(d[i]==1){
        r=r*s%n;
    }
    return r;
}

输出应如下所示:2^0=1 mod 171, 2^1=2 mod 171,...2^171=167

但它从 24 开始,看起来像:2^24=85 mod 171, 2^25=170 mod171 171,...2^171=167

最佳答案

A - 解释

您的代码实际上可以正常工作,问题是程序的输出刚好超过了控制台输出的缓冲区。因此,作为一个简单的解决方案,您应该将程序的输出写入文本文件。如果您使用的是 Windows,请打开一个命令行窗口,然后将输出简单地传递到一个文件(使用 >>> 运算符),然后使用文件编辑器通过文件检查输出(notepad, notepad++ vs.) 如下;

假设编译后的可执行文件名为so.exe

C:\Users\Levent\Desktop\so>so >> output.txt

C:\Users\Levent\Desktop\so>output.txt

B - 步骤

  1. window 键 + r 打开命令行窗口,然后输入 cmd,按 enter。

enter image description here

  1. 将目录更改为您的二进制文件夹
  2. 使用 file.exe >> output.txt 运行您的可执行二进制文件
  3. 使用任意文本编辑器(如记事本?)打开您的文件

C - Windows CMD 示例

enter image description here

D - 输出

您的代码输出如下;

2^0=1 mod 171

2^1=2 mod 171

2^2=2 mod 171

2^3=4 mod 171

2^4=4 mod 171

2^5=8 mod 171

2^6=4 mod 171

2^7=8 mod 171

2^8=16 mod 171

2^9=32 mod 171

2^10=16 mod 171

2^11=32 mod 171

2^12=16 mod 171

2^13=32 mod 171

2^14=16 mod 171

2^15=32 mod 171

2^16=85 mod 171

2^17=170 mod 171

2^18=85 mod 171

2^19=170 mod 171

2^20=85 mod 171

2^21=170 mod 171

2^22=85 mod 171

2^23=170 mod 171

2^24=85 mod 171

2^25=170 mod 171

2^26=85 mod 171

2^27=170 mod 171

2^28=85 mod 171

2^29=170 mod 171

2^30=85 mod 171

2^31=170 mod 171

2^32=43 mod 171

2^33=86 mod 171

2^34=43 mod 171

2^35=86 mod 171

2^36=43 mod 171

2^37=86 mod 171

2^38=43 mod 171

2^39=86 mod 171

2^40=43 mod 171

2^41=86 mod 171

2^42=43 mod 171

2^43=86 mod 171

2^44=43 mod 171

2^45=86 mod 171

2^46=43 mod 171

2^47=86 mod 171

2^48=43 mod 171

2^49=86 mod 171

2^50=43 mod 171

2^51=86 mod 171

2^52=43 mod 171

2^53=86 mod 171

2^54=43 mod 171

2^55=86 mod 171

2^56=43 mod 171

2^57=86 mod 171

2^58=43 mod 171

2^59=86 mod 171

2^60=43 mod 171

2^61=86 mod 171

2^62=43 mod 171

2^63=86 mod 171

2^64=139 mod 171

2^65=107 mod 171

2^66=139 mod 171

2^67=107 mod 171

2^68=139 mod 171

2^69=107 mod 171

2^70=139 mod 171

2^71=107 mod 171

2^72=139 mod 171

2^73=107 mod 171

2^74=139 mod 171

2^75=107 mod 171

2^76=139 mod 171

2^77=107 mod 171

2^78=139 mod 171

2^79=107 mod 171

2^80=139 mod 171

2^81=107 mod 171

2^82=139 mod 171

2^83=107 mod 171

2^84=139 mod 171

2^85=107 mod 171

2^86=139 mod 171

2^87=107 mod 171

2^88=139 mod 171

2^89=107 mod 171

2^90=139 mod 171

2^91=107 mod 171

2^92=139 mod 171

2^93=107 mod 171

2^94=139 mod 171

2^95=107 mod 171

2^96=139 mod 171

2^97=107 mod 171

2^98=139 mod 171

2^99=107 mod 171

2^100=139 mod 171

2^101=107 mod 171

2^102=139 mod 171

2^103=107 mod 171

2^104=139 mod 171

2^105=107 mod 171

2^106=139 mod 171

2^107=107 mod 171

2^108=139 mod 171

2^109=107 mod 171

2^110=139 mod 171

2^111=107 mod 171

2^112=139 mod 171

2^113=107 mod 171

2^114=139 mod 171

2^115=107 mod 171

2^116=139 mod 171

2^117=107 mod 171

2^118=139 mod 171

2^119=107 mod 171

2^120=139 mod 171

2^121=107 mod 171

2^122=139 mod 171

2^123=107 mod 171

2^124=139 mod 171

2^125=107 mod 171

2^126=139 mod 171

2^127=107 mod 171

2^128=169 mod 171

2^129=167 mod 171

2^130=169 mod 171

2^131=167 mod 171

2^132=169 mod 171

2^133=167 mod 171

2^134=169 mod 171

2^135=167 mod 171

2^136=169 mod 171

2^137=167 mod 171

2^138=169 mod 171

2^139=167 mod 171

2^140=169 mod 171

2^141=167 mod 171

2^142=169 mod 171

2^143=167 mod 171

2^144=169 mod 171

2^145=167 mod 171

2^146=169 mod 171

2^147=167 mod 171

2^148=169 mod 171

2^149=167 mod 171

2^150=169 mod 171

2^151=167 mod 171

2^152=169 mod 171

2^153=167 mod 171

2^154=169 mod 171

2^155=167 mod 171

2^156=169 mod 171

2^157=167 mod 171

2^158=169 mod 171

2^159=167 mod 171

2^160=169 mod 171

2^161=167 mod 171

2^162=169 mod 171

2^163=167 mod 171

2^164=169 mod 171

2^165=167 mod 171

2^166=169 mod 171

2^167=167 mod 171

2^168=169 mod 171

2^169=167 mod 171

2^170=169 mod 171

2^171=167 mod 171

关于c - 可执行文件的文本输出部分显示在控制台上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42066471/

相关文章:

c - 尽管终止了客户端,write() 仍返回正确的字节数

c - C中取消引用和括号引用的操作顺序

javascript - Window.print() 绕过打印对话框

c - 以编程方式以 root 用户身份运行 C 程序

c++ - 尝试将两个相似的 printf 样式调试消息合并到一个函数中

java - 将输入与保存在 JAVA 文本文件中的特定行进行比较

python - 在 Python 中按特定日期列出 Outlook 电子邮件

java - 如何退出两个嵌套循环?

pdf - 使用 PoDoFo 或其他开源软件进行 PDF 预检程序?

asp.net - 从 IFrame 打印页面时,为什么我会看到不同的字体大小?