このプログラムに問題がありますが、stdinを使用すると完全に動作しますが、コマンドラインから文字を取得するために変更すると完全に動作します。私は何か間違っているのは分かっていますが、何が助けになるのか分かりません。C、argv []をコマンドライン引数として使用
説明とコード:
/* Program prints the date in this form: September 13, 2010
allow the user to enter date in either 9-13-2010 or 9/13/2010
format, otherwise print 'error' */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char *month(int m)
{
char *months[]={"January","February","March","April","May",
"June", "July","August","September","October",
"November","December"};
return months[m-1];
}
int main(int argc, char *argv[])
{
int m=0,d=0,y=0;
FILE *fp;
if((fp=fopen(argv[1],"rb")) == NULL)
{
fprintf(stderr,"Couldn't open the file. ");
exit(EXIT_FAILURE);
}
printf("Type a date (mm-dd-yyyy) or (mm/dd/yyyy): \n");
if(fscanf(fp,"%d%*[/-]%d%*[/-]%d",&m,&d,&y) != 3) //store characters in variables
{
fprintf(stderr, "Not properly formatted.");
exit(EXIT_FAILURE);
}
printf("%s %2d, %4d",month(m),d,y);
return 0;
}
を入力:
01/30/1990
出力:
Couldn't open the file.
コンパイルされたプログラムをどのように呼び出すのですか? –
私はCode Blocks IDEを使用して、プログラムの引数ウィンドウに01/30/1990とタイプしました。私もgccを使って実行しました。そして、 "システムはあなたが入力した日付を受け入れることができません"と言います。 "必要な特権はクライアントによって保持されていません"。 – tadm123
'fopen(" 01/30/1999 "、" rb ")'は '01/30/1999'のパスでファイルを開こうとします。明らかに、そのようなファイルは存在しません。 –