第一个替换成空字符后,后面的字符就没了,输出替换后的字符串出现替换处后的字符都没了,但并不是替换了
代码如下
#include"stdio.h"
int delStr(char *str,char ch)
{
int i;
for(i=0;*(str+i)!='\0';i++)
if(*(str+i)==ch)
{
*(str+i)='\0';
}
puts(str);
return 0;
}
void main()
{
char *str[100],ch;
printf("请输入字符串:");
gets(str);
printf("请输入要删除的单个字符:");
ch=getchar();
delStr(str,ch);
}
2 回答

Camel97
TA貢獻(xiàn)49條經(jīng)驗(yàn) 獲得超38個(gè)贊
C語言字符串是以'\0'表示結(jié)尾。你把中間某一個(gè)字符改成'\0'相當(dāng)于把一個(gè)字符串截?cái)喑闪藘蓚€(gè)字符串。
所以在調(diào)用函數(shù)輸出字符串的時(shí)候其實(shí)只輸出了前面那個(gè)字符串。
*(str+i)='\0';如果把這句話改成 *(str+i)=' ';你就能看到刪除單個(gè)字符后的字符串。被刪除字符被用空格代替。
如果你想刪除之后中間不出現(xiàn)空格,而是一個(gè)連續(xù)的字符串。提供思路你自己試試
*(str+i)='\0'; 然后把這兩個(gè)字符串拼接起來。你可以選擇把被刪除字符后面的所有字符向前移動(dòng)一位,或者用string.h中的相關(guān)函數(shù)完成。
- 2 回答
- 0 關(guān)注
- 1258 瀏覽
添加回答
舉報(bào)
0/150
提交
取消