c语言字符数组中删除一个字符 财富值79

2016-10-30 17:06发布

输入十个字符,再删除其中与我输入那个字符相同的的字符,不知道为什么我写的这个一直就是删除最后一个字符,求大神看下

#include <stdio.h> int main( void ) {     int    n, j;     char    i[10];     char    c;     for ( n = 0; n < 10; n++ )         scanf( "%c", &i[n] );     scanf( "%c", &c );     for ( n = 0; n < 10; n++ )     {         if ( i[n] == c )         {             i[n] = i[n + 1];             for ( j = n + 1; j < 10; j++ )             {                 i[j] = i[j + 1];             }         }     }     for ( n = 0; n < 9; n++ )         printf( "%c", i[n] );     return(0); }
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答

调试一下就可以发现错误了。
scanf( "%c", &c );这里出现了问题。

你程序本身没有什么问题,问题就可能在于你的输入这11个字母的方式,你必须这样输入:11个字符连续输入,然后enter键,这样才能保证你程序没问题。
其实主要原因是:你连续使用scanf接受输入,如果中间你加入回车,空格,逗号等分割字符的输入都会被当作输入接受的,导致你达不到预期的结果,而且它只接受11个字符
例如你这样输入: a回车b回车c回车d回车e回车f回车。。。。。
其实你数字接受了abcde5个字符和5个回车已经结束,而且你c接受的是一个回车
如果你想要这么输入的话,必须使用一个抵消回车的方法,例如在scanf后面加入一个fgetc接受回车,其他方法有很多,你可以网上查一下