私は VBA から派生した C++ の全体的な専門知識を構築しようとしているので、私のコードに明らかな問題がある場合はご容赦ください... 以下のこの単純なプログラムを使用すると、予期しない出力が得られます。
#include <iostream>
int main() {
char f[]="", c[]="";
std::cin >> f;
std::cout << f << std::endl;
std::cin >> c;
std::cout << f << std::endl;
return 0;
}
実行すると、これが私の結果です:
ABC (入力)
f - ABC (出力)
DEF (入力)
f - EF (出力)
次のようにも試しました:
ABC DEF (入力)
f - ABC (出力)
f - EF (出力)
一度しか読み取っていないと思うので、出力は両方の行で同じになると思いf
ます。さらに、 を取得してcin
に適用するとf
、最初の試行で文字列 ( ) 全体が読み取られるのに、ABC
2 回目の試行で が欠落するのはD
なぜですか?
このコードを使って結果も出力してみましたが、同じ問題が発生するので、ここではcin
and ではなく に問題があると仮定していcout
ます。
for (j=0;j<3;j++) {
std::cout << f[j];
}
std::cout << std::endl;
いくつかの調査を行ったところ、有望に見えるこの質問が見つかりましたが、宣言を からchar f[]
に変更char *f
すると、 で SEGFAULT になりcin
、const char *f
コンパイルさえしませんでした。
私はここでやみくもに手探りしてcin
おり、および/またはchar
配列を正しく使用する方法についてのガイダンスをいただければ幸いです。
私の質問を繰り返します:出力が明示的に値を再割り当てしていないのに、なぜこのように変化するのですか?std::cout << f << std::endl;