目的:ポインタ表記のみを使用して、文字のリスト内のすべての値を1つの要素だけ左(先頭に向かって)に回転させる関数を記述します。
#include <stdio.h>
void rotateLeft( char word[] );
int main (void)
{
// Local Definitions
char word[20] = "applications";
// Statements
printf( "Before rotation: %s\n", word );
rotateLeft( word );
printf( " After rotation: %s\n", word );
return 0;
}
/* =================================================================== */
/* Rotate left
PRE: word[]
POST: word rotated left
*/
void rotateLeft( char word[] )
{
char hold;
char *pW;
pW = word;
hold = *pW;
while (*pW != '\0')
{
printf("%c ", *pW);
*pW = *(pW + 1);
*pW++;
}
*(pW - 1) = hold;
*pW = '\0';
return;
}
私のインストラクターは、*(pW + 1)を使用するのは非常に醜いスタイルだと教えてくれました。現在使用しているスタイルを使用せずに、このソリューションを解決する別の方法があるかどうか疑問に思いました。