i也不知道 发表于 2019-9-29 09:41:26

求助大佬们,为什么输入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: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 = 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)                  ;
}

i也不知道 发表于 2019-10-6 11:29:06

谢谢大佬
页: [1]
查看完整版本: 求助大佬们,为什么输入q w e r 输出结果为q,代码附上