まず第一に、main
宣言では、int main(int argc, char* argv[])
現在持っているものの代わりに使用する必要があります。変数を宣言するときに配列サイズを指定しても意味がありませんextern
(それが argv と argc です)。その上、正しい型を使用していません。argc
でありinteger
、argv
であるarray of strings
(どれが であるかarrays of chars
)。sのargv
配列の配列も同様ですchar
。
次に、単に argc カウンターを使用して argv 配列をループします。argv[0]
はプログラムの名前で、argv[1]
toargv[n]
は実行中にプログラムに渡す引数になります。
これがどのように機能するかについての良い説明があります: http://www.physics.drexel.edu/courses/Comp_Phys/General/C_basics/#command-line
私の2セント。
編集:これは、作業プログラムのコメント付きバージョンです。
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char **argv)
{
FILE *fp;
char c;
if(argc < 3) // Check that you can safely access to argv[0], argv[1] and argv[2].
{ // If not, (i.e. if argc is 1 or 2), print usage on stderr.
fprintf(stderr, "Usage: %s <file> <file>\n", argv[0]);
return 1; // Then exit.
}
fp = fopen(argv[1], "rb"); // Open the first file.
if (fp == NULL) // Check for errors.
{
printf("Error: cannot open file %s\n", argv[1]);
return 1;
}
do // Read it.
{
c = fgetc(fp); // scans the file
if(c != -1)
printf("%c", c);
} while(c != -1);
fclose(fp); // Close it.
fp = fopen(argv[2], "rb"); // Open the second file.
if (fp == NULL) // Check for errors.
{
printf("Error: cannot open file %s\n", argv[2]);
return 1;
}
do // Read it.
{
c = fgetc(fp); // scans the file
if(c != -1)
printf("%c", c);
} while(c!=-1);
fclose(fp); // Close it.
return 0; // You use int main and not void main, so you MUST return a value.
}
お役に立てば幸いです。