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);