|
发表于 2019-9-29 10:37:34
|
显示全部楼层
本帖最后由 jackz007 于 2019-9-29 10:57 编辑
void delete_string(char str[], char ch)
{
int i, j;
for (i = j = 0; str[ i ] != '\0'; i++)
{
if (str[ i ] != ch)
{
str[j++] = str[ i ];
}
str[j] = '\0';
}
}
问题出在标红的那两句,经过这个函数处理过后,如果字符串首字符是需要删除的目标字符,就输出空串,否则,就会输出由这个字符构成的单个字符字符串;
其实,只需要修改一句就好:
void delete_string(char str[], char ch)
{
int i, j;
for (i = j = 0; str[ i ] != '\0'; i++)
{
if (str[ i ] != ch)
{
str[j++] = str[ i ];
}
}
str[j] = '\0';
}
很简单的一个程序,干嘛要分那么多代码文件,我整体修改了一下,谨供楼主参考
- #include <stdio.h>
- #include <string.h>
- int main(void)
- {
- char c , str[80] ;
- int b , k ;
- fflush(stdin) ;
- fgets(str , 80 , stdin) ;
- str[strlen(str) - 1] = '\0' ;
- fflush(stdin) ;
- c = getchar() ;
- for(b = k = 0 ; k < strlen(str) ; k ++) {
- if(str[k] != c) {
- if(b < k) str[b] = str[k] ;
- b ++ ;
- }
- }
- if(b < k) str[b] = '\0' ;
- printf("%s\n" , str) ;
- }
复制代码
|
|