c - 打印 '.' 之后的每个字母,例如如果我输入 a..bcde..fg..h,程序将打印 bfh

标签 c arrays pointers

我是 C 语言新手,有人要求我用 C 语言编写一个程序,要求在用户输入后打印 '.' 后的每个字母。

例如,如果用户输入 a..bcd..e.f..gh 则输出应为 befg 这正是我在类里面给出的例子。

我认为这需要使用指针,但我不确定如何处理这个问题,这是我迄今为止尝试做的。我知道这是不正确的,请帮助我理解如何使用指针来处理这个问题。

#include <stdio.h>

int main() {
char *c, count =0;

    printf("enter some characters");
    scanf("%s", &c);


    while( c != EOF ) {

        if (c != '.') {
            count ++;
        }

        else; {
            printf("%s", c);

        }
    }
}

最佳答案

程序可以如下所示

#include <stdio.h>

#define N   100

int main( void )
{
    char s[N];
    const char DOT = '.';

    printf( "Enter some characters: " );
    fgets( s, N, stdin );

    for ( char *p = s; *p; ++p )
    {
        if ( p[0] == DOT && p[1] != DOT ) putchar( p[1] );
    }
    putchar( '\n' );
}    

它的输出可能看起来像

Enter some characters: a..bcd..e.f..gh
befg

请考虑到此处打印点后面的任何符号(点本身除外)。您可以添加一个检查,以确保点后面有一个字母。

关于c - 打印 '.' 之后的每个字母,例如如果我输入 a..bcde..fg..h,程序将打印 bfh,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35511607/

相关文章:

java - 如何从数组/ArrayList中获取特定元素?

c++ - 使用指针合并两个排序数组的问题

c++ - Near 和 Far 指针

c - 无法解决此错误 "Access violation"

c - 是否可以访问 C 中的 32 位寄存器?

c - 如何在无限数组中进行动态分配

java - 无法使用 char 数组分割创建的字符串\n

c - 为什么用三元运算符初始化数组是非法的?

c++ - 使用多态性重载 << 运算符

php - 高性能Web Spider的开发