繁体   English   中英

scanf Function 由于某种原因在 vscode 中不起作用,有什么提示吗?

[英]scanf Function doesn't work in vscode for some reason, any tip?

我习惯了printfC中的变量,然后我开始使用scanf function,这是代码(无耻地从fresh2ref窃取)

#include <stdio.h>
int main()
{
   char ch;
   char str[100];
   printf("Enter any character \n");
   scanf("%c", &ch);
   printf("Entered character is %c \n", ch);
   printf("Enter any string ( upto 100 character ) \n");
   scanf("%s", &str);
   printf("Entered string is %s \n", str);
}

除了它没有运行,在 vscode output 或 cmd 上也没有。 它甚至没有从第 5 行打印“输入任何字符”,它表明代码正在运行,但甚至不接受输入(并且只有在我单击停止代码运行按钮后才会停止)

有小费吗?

Visual Studio Code:从用户那里获取输入

有一个类似问题的老问题。 (我试图将其标记为重复,但开放的赏金阻止了它。)

format '%s' expects argument of type 'char *', but argument 2 has type 'char (*)[100]' [-Wformat=] scanf("%s", &str);

字符串表示为字符数组,因此数组名称是标识符(隐式转换为指针)是第一个元素的地址,因此在读取字符串时无需指定“&”。

从警告中可以清楚地看出它无法从char (*)[100]转换为char *

线

  scanf("%s", &str);

不正确 - 应该是

  scanf("%99s", str);

所以

  1. 它有界限 - 即不是数组超出界限
  2. 它正在传递一个char *

顺便说一句 - 检查scanf的返回值可能是个好主意

在 C 中,字符串是字符缓冲区的地址,这就是为什么我们不需要带“&”的变量。 带有解决方案的代码

我的英语很差。 我希望我能帮助你!!

scanf("%s", &str); 这句话是假的。 你知道指针,还是 Memory 地址?

如果你知道,假设你是 scanf 的创建者。 您需要做的是阅读用户在屏幕上写的内容并将它们复制到第二个参数的空间。 所以,你不关心第二个参数的值。 你关心的是第二个参数的地址。 然后就可以访问这个 memory 空间了。 所以,当第二个参数是一个变量时,比如int a,就需要"&a"。 但是 str 本身可以是一个地址。 所以它不需要“&”

您可以选择:运行->添加配置...->启动。json 更改此: "externalConsole": true,

最近我遇到了同样的问题。

所以这里是修复:

  1. 在visual studio代码中,go到扩展并下载“Jun han的代码运行”
  2. 然后 go 到扩展设置>>向下滚动>>并单击在终端中运行
  3. 你可以重新打开你的 vs 代码或者跳过这一步。
  4. 现在,再次尝试运行代码。

希望能帮助到你!!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM