本帖最后由 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) ;
}
|