C 直接在终端上阅读

C 直接在终端上阅读,c,C,我试图从终端写入文件,直到您写入“退出”。此代码可以复制,但不起作用。它甚至不写文件!我该怎么办 void my_script(char* name, t_Option option) { FILE *file; (void)option; while (strcmp("/stdin", "exit") != 0) { file = NULL; file = fopen(name,"w"); fpr

我试图从终端写入文件,直到您写入“退出”。此代码可以复制,但不起作用。它甚至不写文件!我该怎么办

void            my_script(char* name, t_Option option)
{
  FILE          *file;

  (void)option;
  while (strcmp("/stdin", "exit") != 0)
    {
      file = NULL;
      file = fopen(name,"w");
      fprintf(file, "%s", "Writing in a file !\n");
      fclose(file);
    }
}
谢谢你的帮助!:)

/******************/

这是我的解决方案,给你们,他们提醒了我很多;)


您需要一个控制台输入功能,如从标准输入读取,然后将读取的输入存储到数组或类似的东西中:

#include <stdio.h>

int main(int argc, char* argv[])
{
  char text[100];   
  do {
    printf("Enter text : \n");                              
    scanf_s("%s", text, 100);
  } while(strcmp(text, "exit"));

  return 0;
}
基本上是问

“/stdin”和“exit”是相同的字符吗


答案永远是一样的:不。循环将永远被输入,永远不会离开。

“所以循环永远不会被输入。”-为什么?
strcmp(“/stdin”,“exit”)
的返回值不等于零,这意味着进入了while循环。对,有一个!=0,我会修好的-1.这在
scanf(“%s”,text)处可能存在缓冲区溢出
@DanielKamilKozar他不知道如何阅读,而且你可能不知道。无论如何,我会使用Ms编译器特有的安全版本。我想我只是在里面死了一点。除了下面回答的读取终端输入的问题之外,应该没有理由不写文件。确实要调用
my\u script()
函数吗?如果
name
的值正确,那么在单词前后加空格写“exit”会怎么样?我可以接受,但解释可能会很好。。否则他会复制粘贴这个,什么也学不到。哈,如果你看一下参考资料就可以完全理解了。哦,好吧,我想这对用户是有用的+在我看来,我一开始并没有想到fgets,而是释放了丹尼尔的地狱:)
FILE *file = fopen(name, "w");
char buff[BUFSIZ];
while(fgets(buff, sizeof(buff), stdin) && strcmp(buff, "exit\n")){
    fprintf(file, "%s", buff);
}
fclose(file);
strcmp("/stdin", "exit")
FILE *file = fopen(name, "w");
char buff[BUFSIZ];
while(fgets(buff, sizeof(buff), stdin) && strcmp(buff, "exit\n")){
    fprintf(file, "%s", buff);
}
fclose(file);