gpt4 book ai didi

c - 从 argv[0] 读取

转载 作者:太空宇宙 更新时间:2023-11-04 05:15:49 25 4
gpt4 key购买 nike

如何从 argv[0] 中读取数据?我正在使用 NetBeans。每次,我都必须输入标准输入。当我使用 argv 时,程序会在没有我输入的情况下执行。

这是我的代码:

int main(int argc,char *argv[])
{
char *text;
int textLen,repNum;

text = stream2string(stdin,&textLen);
//....text = argv[0] doesnt work :(

更新:

当我编译和运行时,我必须键入一个示例字符串!字符串始终相同:ABAABAABBBA。所以我将采用第一个参数而不是标准输入。但是 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() */

我认为设置 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);

等(当然,您可以而且应该提供更详细和有用的错误消息等,但我正在努力关注您似乎遗漏的关键点)。

编辑:嗯,从评论来看,焦点似乎过时了,所以我只是编辑了提供最低限度可接受的错误消息。

关于c - 从 argv[0] 读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1223314/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com