如何通过将特定的字符组合移动到空数组来"delete"单词和元音?

How to "delete" words and vowels by moving specific character combinations to an empty array?

本文关键字:delete 数组 单词 何通过 移动 组合 字符      更新时间:2023-10-16

我在Intro C 类中,该分配应该根据他们输入的短语为用户生成一个"可变名称"。该程序应该用下划线替换所有空间,并删除诸如" is",",","等元素以及元音之类的单词。我一直坚持如何删除特定字符和字符的组合。我们不允许使用字符串,而是使用CSTRING和输入数组的移动部分到最终的"变量名称"数组。这就是我现在试图做到这一点的方式,但它行不通。

void remove(char name[21], char copy[21]){//"deletes" or moves filler words and vowels from the inputted phrase
    for (int i = 0; i < strlen(name); i++){
        if (name[i] == 't'&& name[i + 1] == 'h'&& name[i + 2] == 'e'&& (name [i + 3] == '_' || name[i + 3] == '')){
            for (int j = 0; j < i; j++){
                copy[i] = name[j];
            }
            for (int j = i + 2; j < strlen(name); j++){
                copy[i] = name[j];
            }
        }
        //and for vowels:    
        else if (toupper(name[i]) == 'A' || toupper(name[i]) == 'E' || toupper(name[i]) == 'I' || toupper(name[i]) == 'O' || toupper(name[i]) == 'U'){
            for (int j = 0; j < i; j++){
                copy[i] = name[j];
             }
            for (int j = i; j < strlen(name), j++){
                copy[i] = name[j];
            }
        }
    }

我的一些想法是使用诸如strcpy之类的Cstring库函数之一,或者保留了您必须走的" i"之外的字符。另外,我担心,如果输入中有多个填充单词,我会撤消我在单词上做的事情。所有的帮助都非常感谢。

,因为这是作业,我将尝试解释您应该如何解决此问题而不是直接提供解决方案:

一个简单的C字符串副本看起来像这样:

void MyCStringCopy(char* src, char* dst){  
  int i =0;
  while((dst[i]=src[i])!=''){i++;}
}

c弦(char*)本质上是一系列字符。src [i]正在查看字符串中的特定字符。如果您遍历从源到目标分配每个字符的字符串,则将复制C-string。(src[i]=dst[i])!=''线将满足时循环,直到我们复制NULL(c-strings的终止器),而Loop的身体中的I 可确保我们继续通过C弦。
要制作过滤的字符串副本,您需要在复制之前添加其他逻辑。出于您的目的,副本更好地写出:

void MyCStringCopy(char* src, char* dst){  
  int i =0;
  while(1){
    if((dst[i]=src[i])!='')
       break;
    i++;
  }
}

在您的情况下,您正在寻找字母和字符串匹配,因此您需要循环遍历每个过滤器术语,并在继续之前将其与字符串中的当前点进行比较。

如果您找到源字符串和过滤术语之间的匹配这样您就需要单独存储它们。

要比较您要使用 strncmp(str1,str2,length)strnicmp(str1,str2,length)(及其家人)的过滤条款,具体取决于您是否想对案例敏感;看来您拥有的是表面上敏感的,所以第二个是您想要的。(警告:strncmp&amp; strnicmp无法便携 - 您可能必须自己制作)。

对于更换字符,我会在替换和删除的情况下单独这样做是不同的操作,但是如果您查看复制函数的工作原理,则应该能够弄清楚如何用另一个字符串中的一个字符替换一个字符。

如果您真的卡住了,这是在线编译器中的解决方案。我建议您自己解决这个问题。