求助大佬们,为什么输入q w e r 输出结果为q,代码附上
file1.c#include<stdio.h>
int main()
{
extern void delete_string(char str[], char ch);
extern void enter_string(char str);
extern void print_string(char str[]);
char c, str;
enter_string(str);
scanf_s("%c", &c,2);
delete_string(str,c);
print_string(str);
return 0;
file2.c
void enter_string(char str)
{
gets(str);
}
file3.c
void delete_string(char str[], char ch)
{
int i, j;
for (i = j = 0; str != '\0'; i++)
{
if (str != ch)
{
str = str;
}
str = '\0';
}
}
file4.c
#include<stdio.h>
void print_string(char str[])
{
printf("%s\n", str);
}
本帖最后由 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 = str[ i ];
}
str = '\0';
}
}
问题出在标红的那两句,经过这个函数处理过后,如果字符串首字符是需要删除的目标字符,就输出空串,否则,就会输出由这个字符构成的单个字符字符串;
其实,只需要修改一句就好:
void delete_string(char str[], char ch)
{
int i, j;
for (i = j = 0; str[ i ] != '\0'; i++)
{
if (str[ i ] != ch)
{
str = str[ i ];
}
}
str = '\0';
}
很简单的一个程序,干嘛要分那么多代码文件,我整体修改了一下,谨供楼主参考
#include <stdio.h>
#include <string.h>
int main(void)
{
char c , str ;
int b , k ;
fflush(stdin) ;
fgets(str , 80 , stdin) ;
str = '\0' ;
fflush(stdin) ;
c = getchar() ;
for(b = k = 0 ; k < strlen(str) ; k ++) {
if(str != c) {
if(b < k) str = str ;
b ++ ;
}
}
if(b < k) str = '\0' ;
printf("%s\n" , str) ;
}
谢谢大佬
页:
[1]