输入十个字符,再删除其中与我输入那个字符相同的的字符,不知道为什么我写的这个一直就是删除最后一个字符,求大神看下
#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); }
你程序本身没有什么问题,问题就可能在于你的输入这11个字母的方式,你必须这样输入:11个字符连续输入,然后enter键,这样才能保证你程序没问题。
其实主要原因是:你连续使用scanf接受输入,如果中间你加入回车,空格,逗号等分割字符的输入都会被当作输入接受的,导致你达不到预期的结果,而且它只接受11个字符
例如你这样输入: a回车b回车c回车d回车e回车f回车。。。。。
其实你数字接受了abcde5个字符和5个回车已经结束,而且你c接受的是一个回车
如果你想要这么输入的话,必须使用一个抵消回车的方法,例如在scanf后面加入一个fgetc接受回车,其他方法有很多,你可以网上查一下
一周热门 更多>