我试图把一个句子复制成一个char数组。我试过在scanf("%[^\n])语句中使用scanf("%[^\n]\nif,但它不起作用。有人能帮我弄清楚吗?我在用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)

09-08 08:46