while (1)
{
char j;
if (x[j] == y[j])
这里我试图启动一个循环,我希望能够匹配char数组'x'中的任何字符与char数组'y'。如果字符确实匹配从x到y,那么我想保持原样,如果它们不存在,我希望能够用星号'*'替换它们。 (e.i。x = [a,p,f]
和y = [a,p,p,l,e]
等匹配和替换后y = [a,p,p,*,*]
以及我cout
时拼出app**
)
我不知道如何设置它以及我应该使用什么类型的循环。我对编程很新,我知道基本的替换和切换功能。
答案 0 :(得分:0)
我认为这或多或少都是你指定的。
#include <string.h>
for (int j = 0; y[j] != '\0'; j++)
{
if (strchr(x, y[j]) == 0)
y[j] = '*';
}
@LooneyTunes询问会发生什么:x[] = "apcd"
和y[] = "abcd"
- 你得到"a*cd"
。
答案是是。这是一个演示结果的测试程序。就我而言,它是纯C代码,尽管G ++也非常满意。您可能需要C99选项,例如在编译器上设置了GCC的“-std=c99
”。如果MSVC将其编译为C代码,它将不会喜欢它;在函数顶部声明j
。
#include <string.h>
#include <stdio.h>
static void doit(const char *x, char *y)
{
printf("Before: x = %s, y = %s\n", x, y);
for (int j = 0; y[j] != '\0'; j++)
{
if (strchr(x, y[j]) == 0)
y[j] = '*';
}
printf("After: x = %s, y = %s\n", x, y);
}
int main(void)
{
const char x1[] = "apf";
const char x2[] = "apcd";
char y1[] = "apple";
char y2[] = "abcd";
doit(x1, y1);
doit(x2, y2);
return 0;
}
Before: x = apf, y = apple
After: x = apf, y = app**
Before: x = apcd, y = abcd
After: x = apcd, y = a*cd
答案 1 :(得分:-1)
如果使用C ++字符串类,这会更容易,但这里是C字符串的答案。
int i = 0;
while (x[i] != '\0' && y[i] != '\0') {
if (x[i] != y[i]) {
y[i] = '*';
}
i++;
}
y[i] = '\0'; // C strings are terminated with the null character
编辑:我注意到你想要更改y数组而不是创建一个新数组。