arrays - 在 C 中只打印一次数组中的所有元素?

标签 arrays c loops printf unique

我在 C 中创建了一个数组,我知道如何打印数组中的每个元素,但无法弄清楚如何不打印重复的元素,或者更准确地说,就像我在标题中问的那样,如何只打印一次所有元素?

例如我的数组是:[a b c d a a b d c c]

我想这样打印:[a b c d]

我认为我应该使用 forwhile 循环,但我不知道如何使用。几个小时以来,我一直在思考这个问题并进行了一些研究,但找不到任何有值(value)的东西。

最佳答案

给你。

#include <stdio.h>

int main(void) 
{
    char a[] = { 'a', 'b', 'c', 'd', 'a', 'a', 'b', 'd', 'c', 'c' };
    const size_t N = sizeof( a ) / sizeof( *a );
    
    for ( size_t i = 0; i < N; i++ )
    {
        size_t j = 0;
        
        while ( j != i && a[j] != a[i] ) ++j;
        
        if ( j == i ) printf( "%c ", a[i] );
    }
    
    putchar ( '\n' );
    
    return 0;
}

程序输出为

a b c d 

或者例如,如果您有一个包含字符串的字符数组,则可以通过以下方式实现相同的方法。

#include <stdio.h>

int main(void) 
{
    char s[] = { "abcdaabdcc" };

    for (const char *p = s; *p != '\0'; ++p )
    {
        const char *prev = s;
        
        while ( prev != p && *prev != *p ) ++prev;
        
        if ( prev == p ) printf( "%c ", *p );
    }
    
    putchar ( '\n' );
    
    return 0;
}

程序输出与上图相同

a b c d 

关于arrays - 在 C 中只打印一次数组中的所有元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65944208/

相关文章:

ios - 数组转换错误

javascript - 数组包含吗?

c - 夹板警告 "Statement has no effect"由于函数指针

c++ - 获取从另一个地址指向的地址

python - 在数据帧上迭代 re.split()

javascript - 数组元素的增量幂

ios - 从 json 数据值创建字典

c# - 从字节数组 C# 中读取特定字节

c - 如何知道绑定(bind)对中的事件从接口(interface)

loops - 在 Fortran 中多次写入和替换文件