C语言 我试图计算数组中空格的存储位置,但它总是打印0作为空格的位置,为什么?

b5buobof  于 2023-04-11  发布在  其他
关注(0)|答案(1)|浏览(97)
#include <stdio.h>
#include <conio.h>

void main()
{
    int a = 0, b = 0, c = 0, e[10000];
    char d[10000];
    printf("Enter text: ");
    gets(d);

    while(d[a] != '\0')
    {
        if(d[a] != ' ')
        {
            b++;
        }
        else
        {
             e[c]=a;
             c++;
        }
        
       
        

        a++;
    }

    printf("Number of characters without spaces: %d\n", b);
    for(int i=0; i<=c; i++)
       printf("Spaces : %d \n", e[i] );
    getch();

}

每次我运行程序时,空格的输出都是空格的位置,正如预期的那样,最后是空格:0.如果我把for循环中的条件从i〈=c改为i〈c,问题就解决了。这让我得出结论e[c]=0。我不知道为什么e中的最后一个值会是0,有人能解释一下吗?

0yg35tkg

0yg35tkg1#

首先,这段代码无法编译,因为你有太多的右括号。
第二,你试图直接打印数组e,这会导致打印内存地址而不是实际的元素。你应该循环遍历数组并逐个打印元素:

for (int i = 0; i < c; i++) {
  printf("%d ", e[i]);
}

相关问题