用C语言读取和打印字符串
我想在循环中一个接一个地扫描和打印两个字符串。但我不能这样做。如果我使用循环,则只能扫描和打印一个字符串。如果我尝试在没有循环的情况下打印,则两个“get()”可以正常工作用C语言读取和打印字符串,c,string,gets,puts,C,String,Gets,Puts,我想在循环中一个接一个地扫描和打印两个字符串。但我不能这样做。如果我使用循环,则只能扫描和打印一个字符串。如果我尝试在没有循环的情况下打印,则两个“get()”可以正常工作 #include <stdio.h> int main() { int T,i,j; char name1[100]; char name2[100]; scanf("%d",&T); for(i=0; i<T; i++) { printf("Case %d: ",i+1); //
#include <stdio.h>
int main()
{
int T,i,j;
char name1[100];
char name2[100];
scanf("%d",&T);
for(i=0; i<T; i++)
{
printf("Case %d: ",i+1);
//scanf("%[^\n]s",name1);
gets(name1);
/*for(j=0; j<strlen(name1); j++)
{
printf("%c",name1[j]);
}*/
puts(name1);
//scanf("%[^\n]s",name2);
gets(name2);
/*for(j=0; j<strlen(name2); j++)
{
printf("%c",name2[j]);
}*/
puts(name2);
}
}
#包括
int main()
{
int T,i,j;
字符名称1[100];
字符名称2[100];
scanf(“%d”、&T);
对于(i=0;i在这里。使用fflush(stdin)
。它将接受两个输入,然后逐个打印
#include<stdio.h>
int main()
{
int T,i,j;
char name1[100];
char name2[100];
scanf("%d",&T);
for(i=0; i<T; i++)
{
printf("Case %d: ",i+1);
fflush(stdin);
gets(name1);
gets(name2);
puts(name1);
puts(name2);
}
return 0;
}
#包括
int main()
{
int T,i,j;
字符名称1[100];
字符名称2[100];
scanf(“%d”、&T);
对于(i=0;i您不终止打印。
标准输出被缓冲。
仅在“\n”或显式刷新后执行打印。
试着绕线走:
#include <stdio.h>
int main()
{
int T,i,j;
char name1[100];
char name2[100];
scanf("%d",&T);
for(i=0; i<T; i++)
{
#ifdef BAD_CODE
printf("Case %d: ",i+1);
gets(name1);
puts(name1);
gets(name2);
puts(name2);
putchar("\n");
#else //better code
fgets(name1, sizeof(name1)-1, stdin);
fgets(name2, sizeof(name2)-1, stdin);
printf("Case %d: '%s' '%s'\n",i+1, name1, name2);
#endif
}
}
#包括
int main()
{
int T,i,j;
字符名称1[100];
字符名称2[100];
scanf(“%d”、&T);
对于(i=0;i从用户获取testcase后,下一行get()
函数将获取'\n'
,您必须忽略该场景
这个问题有一个棘手的解决方案。只需在scanf函数中的%d
之后使用'\n'
。scanf(“%d\n”,&T);
#包括
内部主(空){
字符s1[100],s2[100];
int i,T;
scanf(“%d\n”、&T);
对于(i=0;i
请举一个输入输出示例!第一次扫描或获取()-读取qwerty YTRUQ打印qwerty YTRUQ第二次扫描或获取()-读取asd dsa打印asd dsa我希望此输出一个接一个地获取然后依次放入。请参阅scanf()
对于一个数字,在输入流中留下一个换行符,第一个获取()
读取该换行符。建议尽可能不要使用获取
。并非每个人都知道获取
是一个事实。有关使用fflush(stdin)的(de)优点的讨论,请参阅
。那么我通常应该如何复制和粘贴字符串@Jonhware@saqibshafin请参阅注释中的链接。此处发布的链接通常会解释错误的原因以及如何纠正错误。@saqibshafin任何可以限制复制字符数的字符串复制例程通常比unc安全得多hecked例程,例如获取。缓冲区溢出非常严重
#include <stdio.h>
int main(void) {
char s1[100],s2[100];
int i,T;
scanf("%d\n",&T);
for(i = 0; i < T; i++){
printf("Case %d: ",i+1);
gets(s1);
puts(s1);
gets(s2);
puts(s2);
}
return 0;
}