scanf()没有按预期工作,但gets()是

时间:2017-11-05 07:32:59

标签: c scanf gets

这个程序的专家我试图在主字符串中的所需位置添加一个子字符串。但问题是,当我编译它时,它首先要求我输入主字符串。输入主字符串后,它不会要求我输入子字符串,直接并直接要求我输入该字符串。我不明白为什么,因为从语法上来说,这对我来说似乎是正确的。请帮忙。谢谢。

#include <stdio.h>
#include <string.h>

int len1, len, n;

void add(char x[25], char y[25], int z, int r) {
  int i;

  for (i = 0; i < z; i++) {
    if (i == r)
      printf("%s", y);
    printf("%c", x[i]);
  }
}

void main() {
  char s[25], q[25];
  int i;

  printf("\nEnter the main string\n");
  scanf("%[^\n]", s);
  len = strlen(s);
  printf("\nEnter the sub-string\n");
  scanf("%[^\n]", q);
  printf("\nEnter the position\n");
  scanf("%d", &n);
  add(s, q, len, n);
}

另外,当我用gets(s)替换第一个scanf()时,我想补充一下;并保留程序的其余部分,程序运行正常。但是当我使用2个scanfs()时,它不能很好地工作。

0 个答案:

没有答案