gpt4 book ai didi

c - 第二个输入 char* 造成无限循环

转载 作者:行者123 更新时间:2023-11-30 17:52:55 26 4
gpt4 key购买 nike

下面是我的 C 代码。第一个输入工作得很好,但第二个输入会导致无限循环。我已经刷新了缓冲区,但我不知道如何解决这个问题。

#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>

#define MAXARG 7

int main()
{
char buf[256];
char* arg[MAXARG];
char* s;
char* save;
int argv;

static const char delim[] = " \t\n";
int pid, status;

while(1){
printf("MyShell: ");
fgets(buf, sizeof(buf), stdin);
fflush(stdin);
argv = 0;

s = strtok_r(buf, delim, &save);

while(s){
arg[argv++] = s;
s= strtok_r(NULL, delim, &save);
}

arg[argv] = (char*) 0;

if(!strcmp(arg[0], "quit"))
break;
if((pid = fork()) == -1)
perror("fork failed...");
else if(pid != 0){
pid = wait(&status);
}
else{
execvp(arg[0], arg);
}
}
return 0;
}

最佳答案

使用fgets上面的fflush..在输入消息之前,您需要刷新stdin..

您可以在 stdio_ext header 中的 linux 中使用 __fpurge ..

关于c - 第二个输入 char* 造成无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15926152/

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