【发布时间】:2021-07-19 15:52:51
【问题描述】:
所以,我有下面的代码,我需要将 str2 中的前“N”个字符连接到 str1。但是IDK为什么当我输入str1时他会自动跳转到读取N并跳过str2读取,str1和str2读取完全一样。
#include <stdio.h>
#include <string.h>
int main(void) {
char str1[50], str2[25];
int n, tam;
printf("Type the first string: ");
scanf("%[^\n]s", str1);
printf("Type the second string: ");
scanf("%[^\n]s", str2);
printf("Type N: ");
scanf("%d", &n);
tam = strlen(str1);
for(int i=0; i<n; i++){
tam++;
str1[tam] = str2[i];
}
printf("Final string: %s\n", str1);
return 0;
}
【问题讨论】:
-
这能回答你的问题吗? Scanf skips every other while loop in C
-
建议:不要将
%[...]表单与scanf一起使用。我知道为什么有人告诉你使用它,但从长远来看这是一个坏主意。 (从长远来看,你想完全不用scanf来做任何事情。)如果你曾经使用%s、%s和%d来读取你的第一个字符串和你的第二个字符串以及你的号码,它会工作得很好。
标签: c