我怎么读argv[0]?我正在使用NetBeans.每次,我都要输入stdin.当我使用时argv,程序在没有输入的情况下执行.
这是我的代码:
int main(int argc,char *argv[])
{
char *text;
int textLen,repNum;
text = stream2string(stdin,&textLen);
//....text = argv[0] doesnt work :(
Run Code Online (Sandbox Code Playgroud)
更新:
当我编译并运行时,我必须键入一个示例字符串!字符串总是一样的:ABAABAABBBA.所以我将采用第一个参数而不是stdin.但argv[1]也不起作用.
这是stream2string():
char *stream2string (FILE *fptr, int *n)
{
static char *s;
*n = 0;
ALLOC(s,char,2);
s[*n] = getc(fptr);
while(s[*n]!=EOF && s[*n]!='\0' && s[*n]!='\n') {
REALLOC(s,char,++*n+2);
s[*n] = getc(fptr);
}
s[*n] = '\0';
return(s);
} /* stream2string() */
Run Code Online (Sandbox Code Playgroud)
我认为设置textLen也很重要.
argv [0]是您的可执行文件的名称; 我认为你不想读它!相反,我觉得你要打开的argv [1](作为第一个参数传递给你的命令行程序的文件名)和读是:
int main(int argc,char *argv[])
{
char *text;
int textLen,repNum;
FILE *theinput;
if (argc < 2) {
/* no argument */
/* give error message and exit */
fprintf(stderr, "Must pass an argument!\n");
exit(1);
}
theinput = fopen(argv[1], "r");
if (!theinput) {
/* Argument is non-existing file */
/* give error message and exit */
fprintf(stderr, "Can't read %s\n", argv[1]);
exit(1);
}
text = stream2string(theinput, &textLen);
fclose(theinput);
Run Code Online (Sandbox Code Playgroud)
等等(当然你可以而且应该提供更详细和有用的错误信息等等,但我正在努力关注你似乎缺少的关键点).
编辑:啊好吧,焦点似乎已经过时了,从评论来看,所以我只是编辑提供最低限度的可接受的错误信息.