輸入十個字符,再刪除其中與我輸入那個字符相同的的字符,不知道為什么我寫的這個一直就是刪除最后一個字符,求大神看下
#include <stdio.h> int main( void ) { intn, j; chari[10]; charc; 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); }
調(diào)試一下就可以發(fā)現(xiàn)錯誤了。scanf( "%c", &c );這里出現(xiàn)了問題。
你程序本身沒有什么問題,問題就可能在于你的輸入這11個字母的方式,你必須這樣輸入:11個字符連續(xù)輸入,然后enter鍵,這樣才能保證你程序沒問題。其實主要原因是:你連續(xù)使用scanf接受輸入,如果中間你加入回車,空格,逗號等分割字符的輸入都會被當作輸入接受的,導(dǎo)致你達不到預(yù)期的結(jié)果,而且它只接受11個字符例如你這樣輸入: a回車b回車c回車d回車e回車f回車。。。。。其實你數(shù)字接受了abcde5個字符和5個回車已經(jīng)結(jié)束,而且你c接受的是一個回車如果你想要這么輸入的話,必須使用一個抵消回車的方法,例如在scanf后面加入一個fgetc接受回車,其他方法有很多,你可以網(wǎng)上查一下