【发布时间】:2013-12-15 19:22:12
【问题描述】:
我是新的@programming,我有以下问题: 我的程序启动命令提示符:like
input>
然后用户输入一个字符串,类似merge xyz.txt的命令
我终于让它运行了,我的程序只从一开始就读取space。所以
printf("%s", 命令);
output: merge
如果用户输入一个字符串,其中命令不是命令或没有值,它应该重新开始打印input>,并且在命令完成后,它应该再次打印input>。我试图把所有的东西都放到一个while循环中:
void cmdLine()
{
char *whole_entrie = calloc(1,1);
char buffer[BUFFERSIZE];
int dummy = 0;
while(dummy == 0)
{
printf("input>");
fgets(buffer, BUFFERSIZE, stdin);
whole_entrie = realloc(whole_entrie, strlen(buffer) + 1);
strcpy(whole_entrie, buffer);
strcpy(buffer, ""); //reset because i thought the programm uses old entries?????ß
int cnt = 0;
char command[MAX_COMMAND_LENGTH];
while(cnt <= MAX_COMMAND_LENGTH)
{
if(whole_entrie[cnt] == ' ')
{
break;
}
else
{
command[cnt] = whole_entrie[cnt];
cnt++;
}
}
if(strcmp(command, "merge") == 1)
{
merge();
}
else if(strcmp(command, "close") ==1)
{
free(whole_entrie);
dummy = 1;
}
但是:
它随机做其他事情。有时我得到一个双重免费错误,或者他返回 0 或者当我输入xxxkdlf 时它显示merge 的printf() 等等,有人可以帮助我吗,我对这个该死的代码感到沮丧!!!
问候
【问题讨论】:
-
你真的要从标准输入读取还是解析命令行参数?
-
来自手册页:如果找到 s1(或其前 n 个字节),则 strcmp() 和 strncmp() 函数分别返回小于、等于或大于零的整数,小于、匹配或大于 s2。
-
@GradyPlayer 从标准输入读取。 @l drumm 我是新的@programming,是不是说我不能用strcmp?
-
strcmp() 返回一个整数值,表示字符串之间的关系:零值表示两个字符串相等。