【发布时间】:2011-05-14 00:45:22
【问题描述】:
scanf(" %[^\n]", in);
然后例如,我输入 Knock Knock 并回车
但我的代码块在里面
if (strcmp ("Knock Knock",out)==0)
没用
请指教,非常感谢!
char in[80],out[80];
void input(){
printf("Client: ");
scanf("%[^\n]",in);
fp=fopen("test","w");
if (!fp) return ;
fputs(in,fp);
fclose(fp);
}
fp=fopen("test","r");
fgets(out,81,fp);
fclose(fp);
fp=fopen("test","w");
if (strcmp ("Knock Knock",out)==0)
fputs("Server: Who is there?\n",fp);
【问题讨论】:
-
您是否意识到您将数据读入
s,但试图与out进行比较? -
"%[^\n]"适用于 Linux 换行符。如果您在 Windows 中工作,您可能需要将"%[^\r\n]"作为scanf的格式说明符。 -
@mizo:Windows 不支持
scanf格式字符串中的正则表达式,所以它根本无法在 Windows 上运行。 -
我正在linux中开发这段代码
-
@Billy:这取决于库的实现,而不是操作系统。例如,这在 MinGW 中运行良好。它在
libmingwex中对MSVCRT进行了一些扩展。