• 締切済み

C言語の質問です><

C言語の質問です>< 次のような実行結果が得られるプログラミングをしたいのですが・・ ちなみにポインタや標準関数のstrシリーズは使用不可です。 文字列1:ABCDEFGHIJ 開始位置:0 文字数:3 文字列2:ABC 開始位置が7で文字数が5とかの場合は'¥0'の位置まで表示するようにしたいのですが、自分の以下のプログラムだと開始位置が0で文字が3だとABCと表示できるのですが、開始位置が7で文字数が5とかだとできません>< #include<stdio.h> void main(void) { char m1[]="ABCDEFGHIL"; char m2[11]; int i,j,start,mozikazu; printf("文字列1:%s\n",m1); printf("開始位置:"); scanf("%d",&start); if(start >=0 && start <11) { printf("文字数:"); scanf("%d",&mozikazu); } if((start+mozikazu)<11) { for(i=0;i<mozikazu;i++) { m2[i]=m1[i]+start; } m2[i]='\0'; } printf("文字列2:%s\n",m2); return; } どうか教えてください><

みんなの回答

  • anicicle
  • ベストアンサー率36% (129/356)
回答No.4

とりあえず、サイズを11って固定すると後々面倒だから、 一番最初にm1[]のサイズをチェックして、そのサイズを使用したほうがいいと思う。 あと、ループ条件はサイズだけでなくm1[]の文末のチェック('\0')も入れたほうがいいかと

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.3

ん~, なんか問題がおかしい. 「ポインタが使用不可」なら scanf("%d",&start); すらできない. あと, ぶっちゃけ「無駄な努力」をしてる. 実は printf 一発なんだが....

  • samtomsan
  • ベストアンサー率55% (1060/1897)
回答No.2

> if((start+mozikazu)<11) 7 + 5 = 12 ですから、プログラム通りに働きませんね。 else文で11以上の場合の処理を追加されれば良いかと。

  • u-bot
  • ベストアンサー率58% (1736/2988)
回答No.1

m2[i]=m1[i]+start; m1配列の文字にstart変数の値をプラスするのが変じゃない?

関連するQ&A

専門家に質問してみよう