while(scanf("%s",a))
{
if(a[0]=='#')
break;
nextpermutation(a);
}
このwhileループは完全にscanfのために働く" が、私は(scanf関数を置く場合"%[^ \ n] s"、a)その間に一度だけ実行する scanfの両方の戻り値を確認しても同じであることを確認しました なぜこれが起こっているのかわかりませんでした...違いは、(%sの")
あなたのscanf("%[^\n]s")
がが含まれている何
s
が
%[^\n]s
にそこに行っていることです?
をscanf' 'の邪悪を実現し、あなたの代わりに'のstd :: cin'を使用する必要があることですか? –
'%s'は先頭の空白を破棄しますが、'%[set] 'は空白になりません。最初の呼び出しでは、ストリームに残っている '\ n'文字まで読み込みますが、これは含まれません。 2番目の呼び出しでは、 '%[^ \ n]'は最初の文字が '\ n 'なので文字を取得できません。 –
'%99 [^ \ n]' ' - 文字列の先頭のスペース(空白を無視する)と99文字の制限(バッファをあふれさせない)をメモしてください。 –