(追記:最初、バグの関係で修正される前の質問が掲示されてしまいました。本当に申し訳ありません。)
文字列を1文字左にシフトするプログラムを作りたかったのですが、下記のようにコードを記述したところ、変更後の文字列が表示されないまま終了しました。
その理由が知りたいです。
宜しくお願いします。
c
1#define _CRT_SECURE_NO_WARNINGS 2#include <stdio.h> 3#include <ctype.h> 4 5char * a(char *s) 6{ 7 while (*s) { 8 *s = *(s + 1); 9 s++; 10 } 11 12 return s; 13} 14 15int main(void) 16{ 17 char str[128]; 18 19 printf("文字列を入力してください\n"); 20 scanf("%s", str); 21 22 printf("%s", a(str)); 23 24 return 0; 25}
解決後のコード1
c
1#define _CRT_SECURE_NO_WARNINGS 2#include <stdio.h> 3#include <ctype.h> 4 5char * a(char *s) 6{ 7 char *t = s; 8 while (*s) { 9 *s = *(s + 1); 10 s++; 11 } 12 13 return t; 14} 15 16int main(void) 17{ 18 char str[128]; 19 20 printf("文字列を入力してください\n"); 21 scanf("%s", str); 22 23 printf("%s", a(str)); 24 25 return 0; 26}
解決後のコード2
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <ctype.h> void a(char *s) { while (*s) { *s = *(s + 1); s++; } } int main(void) { char str[128]; printf("文字列を入力してください\n"); scanf("%s", str); a(str); printf("%s", str); return 0; }
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/03/09 05:47