前提・実現したいこと
キーボードから文字列を入力し、入力された文字列を後ろから1文字ずつ消して表示したいです。
表示例)
入力文字:ABCDE
実現したい表示内容↓
1行目 ABCDE
2行目 ABCD
3行目 ABC
4行目 AB
5行目 A
発生している問題・エラーメッセージ
コンパイルはできていますが、実行すると以下の内容で表示されてしまいます。 abcdeaaaaaaaaaaaaaaaaaaaaa
該当のソースコード
C
1#include <stdio.h> 2void del(char x[]); 3 4int main(void){ 5 6 char a[20] = {0}; 7 8 printf("文字を入力->"); 9 fgets(a, 20, stdin); 10 11 del(a); 12} 13 14void del(char x[]){ 15 16 int i, j; 17 printf("%s", x); 18 19 for(i=0; i<=20; i++){ 20 for(j=0; j<=20-i; i++){ 21 printf("%c", x[j]); 22 } 23 puts(""); 24 } 25}
試したこと
for(j=0; j<=20-i; i++)→for(j=0; j<=5-i; i++)
上記のとおりfor文を変更しましたが表示内容がabcdeaaaaaaになっただけで、変化は見られませんでした。
for(j=0; j<=x[20]-i; i++)→for(j=0; j<=19-i; j++)
文末がi++となっていたのでj++に修正しました。
abcdeが15行文余計に表示された後、下記のようになり希望の表示内容になりませんでした。
abcde
abcd
abc
ab
補足情報(FW/ツールのバージョンなど)
パイザを使っています。
回答8件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/06/30 09:09
2021/06/30 13:38