gpt4 book ai didi

c - 在 C 中使用多个 scanf 时忽略 scanf 空格的问题

转载 作者:太空宇宙 更新时间:2023-11-04 05:57:15 25 4
gpt4 key购买 nike

我试图在一个小程序中多次使用 scanf 来获取保证有空格的输入。从我浏览过的多个线程来看, scanf("%[^\n]", string); 似乎是让它忽略空格的方法。这适用于一行,但该行之后的任何其他 scanf 都不会通过,并且它们各自的字符串输出如下:

Action: J���J
Resolution: J:F�J�B�J

这里有一些示例代码,我认为它可以工作,但没有。

#include <stdio.h>

int main(void)
{
char str1[100];
char str2[100];

printf("Situation?\n");
scanf("%[^\n]", str1);

printf("Action Taken?\n");
scanf("%[^\n]", str2);

printf("Situation: %s\n",str1);
printf("Action: %s\n",str2);
}

如果我在提示情况时输入“Just a test”,会发生以下情况:

Situation?
just a test
Action Taken?
Situation: just a test
Action: ��_��?�J.N=��J�J�d�����J0d���8d��TJ�J

任何建议或解决方案(不包括fgets)?对正在发生的事情的解释也很好。

编辑:解决方案在 scanf: "%[^\n]" skips the 2nd input but " %[^\n]" does not. why?

char* fmt = "%[^\n]%*c"; 中添加 100%。

char* fmt = "%[^\n]%*c";

printf ("\nEnter str1: ");
scanf (fmt, str1);
printf ("\nstr1 = %s", str1);

printf ("\nEnter str2: ");
scanf (fmt, str2);
printf ("\nstr2 = %s", str2);

printf ("\nEnter str3: ");
scanf (fmt, str3);
printf ("\nstr2 = %s", str3);

printf ("\n");

最佳答案

改变

scanf("%[^\n]", str1);

scanf("%[^\n]%*c", str1);//consume a newline at the end of the line

关于c - 在 C 中使用多个 scanf 时忽略 scanf 空格的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25373708/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com