【问题标题】:Not printing all the values of a function in C不打印 C 中函数的所有值
【发布时间】:2015-10-10 03:27:30
【问题描述】:
#include <stdio.h>
void pp(int);
int main()
{
    int a[5]={4,5,7,1,9};
    int i;
    for(i=0;i<5;++i)
    pp(a[i]);


    return 0;
}
void pp(int n)
{
    char a[6]={'0','0','0','0','0','\0'};
    int x,i;
    int l=4;
    while(n)
    {
        x=n%2;
        a[l--]=x+'0';
        n=n/2;
    }
    for(i=0;i<6;++i)
    printf("%c",a[i]);
    printf(" ");
}

a 是一个 int 数组,其中包含 5 个十进制值。
pp 是将十进制数转换为无返回类型的 5 位二进制的函数。
但是当代码正在执行时,它只打印 a[0] 的结果,即 a 中第一个数据的值,然后它就停止了! 我不明白为什么:3 请帮帮我!

我的代码 o/p 是:00100
但应该是:00100 00101 00111 00001 01001

【问题讨论】:

  • 按预期打印(VS 2013)。
  • 在 Linux / gcc 4.1.2 上也适用于我。你到底是怎么编译这个的?
  • ideone.com/sOqC2n 在这里也可以正常工作!
  • 试试printf(" ");fflush(stdout);
  • @Moinak Debnath 更改此 for 循环 for(i=0;i

标签: c arrays function char return


【解决方案1】:

hackerearth.com 上的编译器似乎有问题。

我建议使用真正的编译器。如果您使用的是 Windows,那将是 Visual Studio。有一个免费版本可供下载。或者,您可以安装 VMWare 并安装 Linux 虚拟机并使用 gcc。

【讨论】:

  • Visual Studio 作为“真正的编译器?!”传递/s
【解决方案2】:

看来问题与循环输出零字符有关

for(i=0;i<6;++i)
printf("%c",a[i]);

无需单独输出每个字符。您可以更改这些声明

for(i=0;i<6;++i)
printf("%c",a[i]);
printf(" ");

到这个

printf( "%s ", a );

【讨论】:

    【解决方案3】:

    我在评论中说

    我想知道当a[i] 是终止空字符时,运行时环境是否无法正确处理printf("%c", a[i]);。我会试试for(i=0;i&lt;5;++i) printf("%c",a[i]);

    @rpattiso 在https://code.hackerearth.com/d04282B 验证了这一点。

    要解决您的问题,请使用:

    for(i=0;i<5;++i)
       printf("%c",a[i]);
    

    或者干脆

    printf("%s", a);
    

    【讨论】:

    • @MoinakDebnath,当a[i] 是终止空字符时,ideone.com 的运行时环境能够以优雅的方式处理printf("%c", a[i]);
    猜你喜欢
    • 1970-01-01
    • 2022-06-13
    • 2022-11-17
    • 2018-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-01
    • 2018-09-29
    相关资源
    最近更新 更多