如何通过将特定的字符组合移动到空数组来"delete"单词和元音?
How to "delete" words and vowels by moving specific character combinations to an empty array?
我在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无法便携 - 您可能必须自己制作)。
对于更换字符,我会在替换和删除的情况下单独这样做是不同的操作,但是如果您查看复制函数的工作原理,则应该能够弄清楚如何用另一个字符串中的一个字符替换一个字符。
如果您真的卡住了,这是在线编译器中的解决方案。我建议您自己解决这个问题。
- 为什么数组大小信息可用于"sizeof"运算符和 delete[] 运算符,但在将数组作为参数传递到
- 调用delete[]时,某些东西导致堆损坏,但我已正确设置了数组的维度
- 在复制 delete[] 数组后在 C++ 中检测到堆损坏
- 使用delete []删除在堆内存上创建的一系列数组
- 有没有办法拥有一个未初始化的类数组,这些类在调用 delete[] 时不会被破坏?
- 为什么泄漏内存比在动态数组上执行 delete[] 慢
- 如何通过将特定的字符组合移动到空数组来"delete"单词和元音?
- 在对象的动态数组上调用 delete [] 不会释放内存?
- Delete[]数组中断了我的C++程序
- C++ 是否可以从数组中'delete'元素?
- 如何"delete"数组的一部分并保留其余部分而不运行它?
- C++ 使用 delete[] 删除新数组
- delete[] 运算符的参数可以指向数组的非第一个元素吗?
- 如果将 delete[] 应用于非数组指针会发生什么情况
- 在给定的 c++ 代码中"delete [] element"以实现一维数组的目的是什么?
- 在接收动态数组或堆对象时,我应该使用 delete 还是 delete[]
- 使用delete[]为一维常量的2d数组解除内存分配
- 重载数组中的new和delete
- std::unique_ptr<T[]> 使用派生对象数组,使用 delete 函数
- c++ delete数组崩溃