-1

私は C の初心者ですsystem("subprogram.exe")。関数を使用して別の単純な加算プログラムを実行するプログラムがあります。subprogram.cこのサブプログラムは 2 つの整数入力を取得しますが、メイン プログラムからファイルに入力するにはどうすればよいでしょうか。

主なプログラム:

#include<stdio.h>
int main()
{
    int a,b;
    a=10;
    b=10;
    system("subprogram.exe");
} 

サブプログラムには次のコードがあります..

#include<stdio.h>
int main()
{
    int a,b,c;
    c=a+b;
    printf("%d",c);
    return 0;
}

「メインプログラム」から「サブプログラム」に「a」と「b」の値をコピーする方法は?

4

6 に答える 6

1

簡単な答えのコマンド ライン引数。

あなたのメインプログラム:

#include<stdio.h>
#include<string.h>
int main()
{
    int a,b;
    a=10;
    b=10;
    char str1[10], str2[10];
    char progCmdline[100];
    sprintf(str1, " %d", a); //Convert int a to string str1
    sprintf(str2, " %d", b); //Convert int b to string str2
    strcpy(progCmdline,"subprogram.exe ");  //Build
    strcat (progCmdline,str1);   // Your command line string
    strcat (prog,str2);    // with inputs
    system(progCmdline);
} 

サブプログラム:

#include<stdio.h>
int main(int argc, char **argv )
{
    int a,b,c;
    if(argc>0)
    {
        a = atoi(argv[1]); 
        b = atoi(argv[2]);
        c = a + b;
        printf("%d",c);
    }
return 0;
}

subprogram.exeargv[0]2argv[1]3argv[2]atoi のリファレンスを読んで、その機能を理解してください。

于 2013-10-28T09:42:05.517 に答える
1

使用する必要があるのは、これを簡単に行うためのコマンド ライン引数です。プロセス間通信など他の方法もありますが、メインプログラムからsubprogram.exeを開きたい場合は、コマンドライン引数を使用できます。

それ以外の

system("subprogram.exe");

使用する

sprintf(command, "subprogram.exe %d %d", a, b)
system( command );

これにより、整数が subprogram.exe と連結されて実行されます。コマンド文字配列を宣言することを忘れないでください。

ただし、サブプログラムのメイン関数も引数を取るように変更する必要があります。プログラムの実行中にコマンドライン引数が渡されると、引数の数のカウントと引数の配列がメイン関数に渡されます。

int main ( int argc, char *argv[] )
{
  if (argc < 2)  /* assuming that you need two inputs */
  {
          printf("needs atleast two inputs");
  }
  else
  {
         printf("%d",atoi(argv[1])+argv[2]));
  }
}
于 2013-10-28T09:46:58.357 に答える
0

プロセス間プログラミング構造が必要になります。パイプ、メッセージ キュー、または共有メモリを使用できます。これを参照できます: http://www.cs.cf.ac.uk/Dave/C/node23.html

于 2013-10-28T09:37:06.377 に答える
0

別の方法として、メイン プログラムにファイルを保存させ、それをサブプログラムが読み取るようにすることもできます。

//In main program:
FILE * jakethedog = fopen("jakethedogfile.txt","w");
fprintf(jakethedog, "%d %d",a,b);
fclose(jakethedog);

//In subprogram:
FILE * cakethecat = fopen("jakethedogfile.txt","r");
fscanf(cakethecat,"%d %d",&a,&b);
fclose(cakethecat);

メインプログラムとサブプログラムの間で双方向に情報を交換したい場合、これがより便利であることがわかります。

于 2013-10-28T09:55:54.453 に答える