私が午前問題は、例えば言うとき、ユーザは、ディスプレイを示し、7入るということです。印刷フィボナッチ()
0 11 2 3 5 8 13 21 child ends.
私は修正する方法を見つけ出すように見えることはできません11及び理由それはシーケンスの中に多くの数字を表示しています!誰も助けることができますか?
シーケンス番号はコマンドラインで提供されます。たとえば、5を指定すると、フィボナッチシーケンスの最初の5つの数字が子プロセスによって出力されます。親プロセスと子プロセスはそれぞれ独自のデータ・コピーを持っているため、子プロセスはシーケンスを出力する必要があります。プログラムを終了する前に子プロセスが完了するのを待つために、親プロセスにwait()呼び出しを呼び出させるようにしてください。必要なエラーチェックを実行して、非負の数値がコマンド行に確実に渡されるようにします。彼らはあなたの画面上で一緒に押しつぶされているので
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
int main()
{
int a=0, b=1, n=a+b,i,ii;
pid_t pid;
printf("Enter the number of a Fibonacci Sequence:\n");
scanf("%d", &ii);
if (ii < 0)
printf("Please enter a non-negative integer!\n");
else
{
pid = fork();
if (pid == 0)
{
printf("Child is producing the Fibonacci Sequence...\n");
printf("%d %d",a,b);
for (i=0;i<ii;i++)
{
n=a+b;
printf("%d ", n);
a=b;
b=n;
}
printf("Child ends\n");
}
else
{
printf("Parent is waiting for child to complete...\n");
wait(NULL);
printf("Parent ends\n");
}
}
return 0;
}
いいえ。エレンは本当にそれらの間の空白を逃しています。最初のprintfを注意深く見てください... – dmckee
私は考えましたが、シーケンスの他のすべての要素はスペースで区切られていますが、それでもまだ要素が多すぎるという問題があります。ユーザーによって7が入力された場合 – Ellen