尝试使用指针在C中使用其他方法“”所有4个字母的单词

我试图做一个方法叫做“审查”,发现 4 个字母的单词在一个字符串中使用 2 种方法我已经做了,新的方法必须无效审查(* 开始),解释我做错了将是伟大的,谢谢!

我试图做一个方法叫做“”,发现 4 个字母的单词在一个字符串中使用 2 种方法我已经做了,新的方法必须无效(* 开始),解释我做错了将是伟大的,谢谢!

void four_stars(char *start){
int count = 0;
int c = 42;
printf("entered\n");
while(count < 4){
    *start = c;
    start++;
    count++;
}
}

char* find_blank(char *start){
char c;
int space = 127;
int null = 0;
while(*start){
    c = *start;
    int asciiVal = c;
    if(asciiVal == 32 || asciiVal == 3){
        return start;
    }
    start++;
}
}

主要的方法,我用来测试它是:

int main(){
char myString3[25] = "Test a duck";
printf("The string before: %s\n", myString3);
censor(myString3);
printf("The new string: %s", myString3);
return 0;
}

我所拥有的是

void censor(char *start){
char* c = start;
while(*start){
    int i = (int)find_blank(start) - (int)start;
    start = start + i + 1;
    c = start;
    if((int)find_blank(start) - (int)c == 4){
        four_stars(start);
    }
    start++;
}
}
0
#include <stdio.h>
void four_stars(char *start){
    int count = 0;
    int c = '*';
    //printf("entered\n");
    while(count < 4){
        *start = c;
        start++;
        count++;
    }
}
char* find_blank(char *start){
    char c;
    while(*start){
        c = *start;
        if(c == ' ' || c == '\t' || c == '\n'){
            return start;
        }
        start++;
    }
    return start;
}
char* find_not_blank(char *start){
    char c;
    while(*start){
        c = *start;
        if(c != ' ' && c != '\t' && c != '\n'){
            return start;
        }
        start++;
    }
    return NULL;
}
void censor(char *start){
    while(start = find_not_blank(start)){
        int len = find_blank(start) - start;
        if(len == 4){
            four_stars(start);
        }
        start += len;
    }
}
int main(){
    char myString3[25] = "Test a duck";
    printf("The string before: %s\n", myString3);
    censor(myString3);
    printf("The new string: %s", myString3);
    return 0;
}
0

有许多方法可以做到这一点。在学习 C 时,挑战之一是熟悉使用指针扫描字符串。随之而来的是学习什么 C 库函数可在需要时帮助扫描。(你总是可以只用指针来做,但是有一些有用的函数可以节省你大量的比较工作)

扫描 4 个字母的单词时要考虑几个复杂的因素。最值得注意的是标点符号为单词结尾。处理多个可能的单词结尾的一种快捷方式是简单地创建一个字符串,该字符串包含可以在单词结尾的字符集合,而不是简单的space。然后可以使用 C 库函数strchr来检查您的结尾字符是否在该集合中。

利用这一点,这里是一个简短的例子,一个方法来扫描一个字符串的 4 个字母的单词,可以帮助你:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void censor (char *s)
{
    if (!s) return;                 /* validate s               */
    char *sp = s;                   /* start pointer            */
    char *ep = s;                   /* end pointer              */
    char *termchr = " ,.\n\t\0";    /* str of word ends         */
    while (*ep)                     /* for each char in string  */
    {
        if (strchr (termchr, *ep))  /* if char in termchr       */
        {                           /* and num chars == 4       */
            if (ep - ((sp > s) ? ++sp : sp) == 4) 
            {
                while (sp < ep)     /* replace with '*'         */
                    *sp++ = '*';
            }
            else
                sp = ep;            /* if not, just advance sp  */
        }
        ep++;
    }
}
int main (int argc, char **argv) {
    if (argc < 2) {
        fprintf (stderr, "\n error: insufficient input. Usage:  %s <string>\n\n", argv[0]);
        return 1;
    }
    char *str = strdup (argv[1]);   /* make a copy to prevent clobbering argv[1]    */
    printf ("  original string: %s\n", str);
    censor (str);
    printf ("  censored string: %s\n", str);
    return 0;
}
output:
$ ./bin/censor "A sting that has duck you dude."
  original string: A sting that has duck you dude.
  censored string: A sting **** has **** you ****.

注意:((sp > s) ? ++sp : sp)是一个简单的测试,它说如果我在开头,则在比较之前不要前进1

本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处

(290)
为什么WindowsXP无法处理更新的SSL证书版本
上一篇
将DateTime转换为StringPHP
下一篇

相关推荐

  • vscode code命令:# 如何使用 VSCode 命令

    VSCode Code命令是Visual Studio Code的一个内置命令,用于在本地和远程服务器上执行代码。它可以让你在不同的系统上运行代码,而不需要安装任何软件。…

    2023-01-22 09:55:35
    0 62 61
  • cv树洞柒夜事件CV树洞中的秘密与惊奇

    cv树洞柒夜事件是一个有趣的计算机视觉活动,它提供了一种新的方式来利用计算机视觉技术来探索和发现景观。它始于2020年7月,由一群热爱计算机视觉的研究者和开发者发起,他们希望通过使用机器学习技术来探索景观中的精彩之处。cv树洞柒夜事件的目标是使用机器学习技术来探索景观中的精彩之处,并利用这些发现来改善景观设计。参与者需要使用机器学习技术来探索景观,并利用这些发现来改善景观设计。参与者可以使用Python,OpenCV,TensorFlow等技术来完成任务,并将其发布在GitHub上。…

    2023-01-08 12:49:50
    0 26 83
  • cv小随:如何利用CV技术提升求职成功率

    示例示例cv小随是一种基于计算机视觉的智能技术,它可以帮助用户自动识别图像中的物体、场景和行为,从而实现自动化的图像处理。cv小随可以用于多种应用场景,如图像搜索、图像分类、图像识别、图像检测等。…

    2023-01-01 11:12:42
    0 14 52
  • win10可以安装cad2007吗:CAD2007是否可以在Win10上安装?

    不可以,因为CAD2007不支持Windows 10系统。如果想要安装CAD2007,需要安装在Windows XP或者Windows 7系统上。…

    2023-01-20 02:04:42
    0 36 32
  • iban code是什么意思一种国际银行帐户号码标准

    IBAN(International Bank Account Number)代码是一种国际标准的银行账户号码,用于在不同国家之间进行国际转账。它由一串字母和数字组成,通常由2至4个字母开头,后面跟着一串数字。…

    2022-12-30 09:24:47
    0 22 81
  • cv 机器视觉:如何利用机器视觉技术提高图像处理效率

    CV(Computer Vision)机器视觉是一门研究计算机如何理解和处理图像的学科,它旨在使计算机能够以人类般的方式识别和理解图像。它主要应用于图像处理、图像分析、计算机视觉等领域,广泛应用于机器人、自动驾驶、医疗影像分析等领域。…

    2023-01-23 11:32:51
    0 53 56
  • mac 开发c++:Mac 下开发 C++ 的入门指南

    示例示例Mac OS X 是一个强大的操作系统,可以用来开发 C++ 应用程序。下面是一个简单的 C++ 程序的代码示例:#include…

    2023-01-02 10:39:58
    0 85 80
  • cv谷江山:沉浸在谷江山的美丽风光中

    cv谷江山是一种用于计算机视觉(Computer Vision)的开源库。它提供了一系列的工具和算法,可以帮助开发者快速构建和训练自己的计算机视觉模型。…

    2023-01-09 11:29:48
    0 92 81

发表评论

登录 后才能评论

评论列表(49条)