#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)に代入
}
}
解説:
前: | 次: