相同字符我有兩個字符串:C:兩個字符串
char *str1 = "this is a test";
char *str2 = "ts bd a";
我試圖寫一個返回與兩個字符串相同字符的新字符串沒有重複(也「功能」是重複)。例如:
char *retStr = GetSameChars(str1, str2); //returns "ts a";
我該怎麼做?
我正在嘗試:
char *GetSameChars(char str1[], char str2[]) {
int found = -1, i , j = 0, biggest, index = 0;
char *retArr, *star = '*';
int str1Len, str2Len, count = 0;
str1Len = strlen(str1);
str2Len = strlen(str2);
biggest = str1Len > str2Len ? str1Len : str2Len;
retArr = (char *)malloc(sizeof(char) * count);
for (i = 0; i < str1Len; i++) {
for (j = 0; j < str2Len; j++) {
if (str1[i] == str2[j] && found == -1) {
count++;
found = j;
} else
if (str2[j] == str2[found])
str2[j] = star; //Throw an exception
}
found = -1;
}
retArr = (char *)malloc(sizeof(char) * count);
j = 0;
for (i = 0; i < str2Len; i++)
if (str2[i] != '*')
retArr[j++] = str2[i];
for (i = 0; i < str2Len; i++)
printf("%c", retArr[i]);
}
當我想我得到了一個異常的行str2[j] = star;
。
我的錯誤是什麼?
你嘗試過這麼遠嗎?你的代碼如何工作,或不工作?當你打電話給你的功能是什麼結果呢?你期望的結果是什麼?最重要的是,*你能顯示你的函數*的代碼嗎?請[閱讀關於如何提出好問題](http://stackoverflow.com/help/how-to-ask),並學習如何創建[最小,完整和可驗證示例](http:// stackoverflow。 COM /幫助/ MCVE)。 –
@JoachimPileborg,查看更新。 – CSharpBeginner
我想你的編譯器應該抱怨'str2 [j] = star;'行。你正在試圖將'char *'類型賦值爲'char'類型。'star'只是一個字符,將其定義更改爲'char star ='*';' – yano