#include <string.h> // for strlen void my_push_front(char *str, char c) { if( c == '\0' ) return; const int len = strlen(str); for(int i = len; i >= 0; --i) { str[i+1] = str[i]; // 文字列を1文字後ろにずらす } *str = c; // 先頭に1文字挿入 }
解説:
void my_push_front(char *str, char c) { if( c == '\0' ) return; char *ptr = str; while( *ptr++ != '\0' ) { // ptr をヌル文字の次まで進めます } while( ptr != str ) { *ptr = *(ptr - 1); // 1文字ずらす --ptr; } *str = c; // 先頭に1文字挿入 }
解説:
void my_push_front(char *str, char c) { if( c == '\0' ) return; for(;;) { char t = *str; // 現在位置文字を t に保存 if( (*str++ = c) == '\0' ) // 文字を挿入 return; // ヌル文字を挿入したら終わり c = t; // 保存した文字を次に挿入する文字(c)に代入 } }
解説:
前: | 次: