※ ChatGPTを利用し、要約された質問です(原文:C++)
C++ 文字を右にずらす問題
このQ&Aのポイント
C++文字を入力して、それを1つ右にずらして出力する問題。
関数内でポインタを使用するのが条件で、ズラしているつもりが、入力した文字がそのまま出力されてしまいます。
ポインタを使用して文字列を右にずらすアルゴリズムを実装しようとしていますが、思った通りに動いていないようです。
文字を入力して、それを1つ右にずらして出力する問題。
例 aret → tare
関数内でポインタを使用するのが条件です。
ズラしているつもりが、入力した文字がそのまま出力されてしまいます。
自分の方針としては、
関数内で入力された文字の長さを確認。
文字列の最後の文字をtmpに保存して
ドンドン右にずらして保存していく。
最後にtmpに保存したものを、文字列の最初に入れる。
というものです。
わかるかた、ご指導お願いします。
#include<stdio.h>
#include<string.h>
void kaiten(char *t)
{
int len =0;
int i;
char tmp;
while (*t++){
len++;
}
tmp = *(t+(len-1));
for(i=len-1;i>0;i--)
*(t+i)=*(t+i-1);
*t = tmp;
}
int main()
{
char s[100];
printf("文字列を入力:"); scanf("%s",s);
kaiten(s);
printf("一文字ずらすと:%s\n",s);
}
お礼
なるほど! char *p=t; と置き換えて、 while(*p++){len++;} とすることによって解決しました! ありがとうございました!