重複の可能性:
「セグメンテーション違反」が発生しないのはなぜですか?
このコードが機能するのはなぜですか?最初の要素が最初の文字のみを保持している場合、残りの文字はどこに保存されますか?そして、これが可能であれば、なぜこの方法を使用しないのですか?
11行目に注意してください:static charc[1]。1つの要素を使用して、必要な数の文字を格納できます。後でそれを指すときに、関数の外でメモリ位置を存続させるために静的を使用します。
#include <stdio.h>
void PutString( const char* pChar ){
for( ; *pChar != 0; pChar++ )
{
putchar( *pChar );
}
}
char* GetString(){
static char c[1];
int i = 0;
do
{
c[i] = getchar();
}while( c[i++] != '\n' );
c[i] = '\0';
return c;
}
void main(){
PutString( "Enter some text: " );
char* pChar = GetString();
PutString( "You typed the following:\n" );
PutString( pChar );
}