我试图把一个句子复制成一个char
数组。我试过在scanf("%[^\n])
语句中使用scanf("%[^\n]\n
和if
,但它不起作用。有人能帮我弄清楚吗?我在用C语言。它可以处理第一个代码,但不能处理第二个代码。
文件#1
#include <stdio.h>
int main ()
{
char c[10];
printf ("Enter text.\n");
scanf("%[^\n]", c);
printf ("text:%s", c);
return 0;
}
文件#2
#include <stdio.h>
#include <string.h>
int main(void)
{
char command[10];
char c[10];
printf("cmd> ");
scanf( "%s", command);
if (strcmp(command, "new")==0)
{
printf ("Enter text:\n");
scanf("%[^\n]", c);
printf ("text:%s\n", c);
}
return 0;
}
最佳答案
在%[^\n]
之前加一个空格,如下所示:
#include <stdio.h>
#include <string.h>
int main(void)
{
char command[10];
char c[10];
printf("cmd> ");
scanf( "%s", command);
if (strcmp(command, "new")==0)
{
printf ("Enter text:");
scanf(" %[^\n]", c); // note the space
printf ("text:%s", c);
}
return 0;
}
现在应该可以了。这个空格使它使用前面输入的任何空格。
这是我在没有空间的情况下测试时的输出:
cmd> new
Enter text:text:@
------------------
(program exited with code: 0)
空间方面:
cmd> new
Enter text:test
text:test
------------------
(program exited with code: 0)