我需要帮助的显示名称类似这样的命令行(我不知道该怎么解释)命令行用C参数Ç
$:Enter your name: Test
$:Test>
但是当你继续按回车它仍然显示测试>
$:Test>
$:Test>
那么,我们如何得到的argv [0],做这样的事情(对不起,我不能大概解释)
谢谢
我需要帮助的显示名称类似这样的命令行(我不知道该怎么解释)命令行用C参数Ç
$:Enter your name: Test
$:Test>
但是当你继续按回车它仍然显示测试>
$:Test>
$:Test>
那么,我们如何得到的argv [0],做这样的事情(对不起,我不能大概解释)
谢谢
如果你脑子里想的,而壳状的程序,也许使用以下couldbe:
#include <stdio.h>
#include <string.h>
#include <stdbool.h>
#define BUFSIZE 64
int main() {
char prompt[BUFSIZE];
char command[BUFSIZE];
char *prefix = "$:";
char *suffix = ">";
printf("%s%s%s", prefix, "Enter your name:", suffix);
fgets(prompt, BUFSIZE, stdin);
prompt[strlen(prompt)-1] = '\0'; // get rid of the \n
while (true) {
printf("%s%s%s", prefix, prompt, suffix);
fgets(command, BUFSIZE, stdin);
if (strncmp(command,"Quit",4) == 0)
break;
}
return 0;
}
非常感谢你这是我寻找的 –
命令行参数存储在char ** argv中,并且它们是argc。
int main(int argc, char **argv)
{
int i=0;
for(i=0; i< argc; i++)
printf("argument number %d = %s\n", i, argv[i]);
return 0;
}
的argv [0]是程序的名称被执行,所以的argc总是至少== 1(或更多)
只要有可能,应使用getopt的(),以便顺序你的参数无关紧要。例如,假设您想要获取大小的整数参数,执行模式的整数,并指定是否以“安静模式”运行。进一步假设“-h”应该打印帮助并退出。这样的代码将会诀窍。 “s:m:hq”字符串表示“-s”和“-m”提供参数,但其他标志不提供参数。
int main() {
// parse the command-line options
int opt;
int size = DEFAULT_SIZE, mode = DEFAULT_MODE, quiet = 0;
while ((opt = getopt(argc, argv, "s:m:hq")) != -1) {
switch (opt) {
case 's': size = atoi(optarg); break;
case 'm': mode = atoi(optarg); break;
case 'q': quiet = 1; break;
case 'h': usage(); return 0;
}
}
// rest of code goes here
}
当然,如果optarg为空,则应该添加错误检查。另外,如果你使用C++,“string(optarg)”是你的case语句设置一个std :: string来保存一个在argv中存储为char *的值的适当方法。
我认为这个问题是解析用户输入的一个类似shell的交互式程序 – jev
我回答了有关如何获得命令行参数这里之前的问题:http://stackoverflow.com/问题/ 18937861/C-如何做通吃多档换参数/ 18939140#18939140。看看是否有助于你开始。 – lurker
你想写一个交互式程序吗?还有一种设置该程序提示的方法? –
还是你想重命名命令行提示符? – Duck