比较元素

你好,让我们说我有2个字符串,“今天是美好的一天”和“AO”。我想删除出现在第一个字符串中的第二个字符串的字符。比较元素

这是我的问题:

char c[20]; 

char p[10];

int i,j;

int l1,l2;

printf("Enter a string \n");

scanf("%s",cd);

printf("Enter another string \n");

scanf("%s",car);

len1 = strlen(cd);

len2 = strlen(car);

for (i=0;i<len1;i++){

for (j=0;j<len2;j++){

if (cd[i]==car[j]){

cd[i]="";

}

}

}

我要的是第1串像 “TDY是好的DY”。所以我清空元素相同的位置以便稍后重新定位。

显然 “CD [I] ==汽车[J]。” 不能是c上做的,我得到了“从 '为const char *' 到 '炭' 转换无效。

所以我几乎卡住了。我会感谢任何帮助。

回答:

1)这是你的算法匹配尽可能接近的解决方案。 所有你需要的是一个额外的循环和更换cd[i]="";不能用cd[i]=0;进行编译;编译器给出的错误涉及到表达式cd[i]="";cd[i]是一种字符类型,您不能分配字符串"",它具有typ e const char *为char变量。 cd[i]是一个字符""是一个指针。

操作cd[i]=0;让你想要你想要的:我清空元素相同的位置以便稍后重新定位它。它取代了不需要的字符以0

#include <stdio.h> 

#include <string.h>

int main()

{

char cd[] = "Today is a nice day";

char tmp[] = "Today is a nice day";

char car[] = "ao";

int i;

int j;

int k;

int len1 = strlen(cd);

int len2 = strlen(car);

for (i=0;i<len1;i++){

for (j=0;j<len2;j++){

if (cd[i] == car[j]){

cd[i]=0;

}

}

}

k = 0;

for (i=0; i<len1; i++)

{

if(cd[i] == 0)

{

}

else

{

tmp[k] = cd[i];

k++;

}

}

tmp[k] = 0; /* remember to terminate the tmp */

printf("%s\n", tmp);

strcpy(cd,tmp);

printf("%s\n", cd);

return 0;

}

OUTPUT:

Tdy is nice dy                     

Tdy is nice dy

或者,而不是清除不需要的字符为0,你可以跳过它。下面这个方案给出:

#include <stdio.h> 

#include <string.h>

int main()

{

char cd[] = "Today is a nice day";

char car[] = "ao";

int i;

int j;

int k = 0;

int skip = 0;

int len1 = strlen(cd);

int len2 = strlen(car);

for (i=0; i<len1; i++)

{

for (j=0; j<len2; j++)

{

if (cd[i] == car[j])

{

skip++; // make note that this character is not needed

}

}

if(skip == 0)

{

cd[k] = cd[i]; // copy the character

k++; // increase the position index

}

else

{

// skip the copy of charcter; clear the skip marker

skip = 0;

}

}

cd[k] = 0; // remember to terminate the new ck string!

printf("%s\n", cd);

return 0;

}

OUTPUT:

Tdy is nice dy 

以上是 比较元素 的全部内容, 来源链接: utcz.com/qa/258950.html

回到顶部