【问题标题】:An issue with scanf() in Visual Studio Code (C)Visual Studio Code (C) 中的 scanf() 问题
【发布时间】:2021-11-14 13:18:21
【问题描述】:

所以我有这段代码

#include <stdio.h>
#include <string.h>
int main()
{
    int i;
    printf("What's your number?\n");
    scanf("%d", i);

    return 0;
}

每次我尝试在输出中运行它时,我什么都看不到,它也没有尝试接受我的输入,它看起来像这样

[Running] cd "c:\Users\bauti\Downloads\ENGG-1410\" && gcc Assignment_1.c -o Assignment_1 && "c:\Users\bauti\Downloads\ENGG-1410\"Assignment_1

没有别的。

因为我使用的是 Code Runner,所以我决定去 File -> Preferences -> Settings -> Code-runner: Run in terminal,尝试通过终端运行我的代码,但是当我这样做时,我会收到以下消息:

$ cd "c:\Users\bauti\Downloads\ENGG-1410\" && gcc Assignment_1.c -o Assignment_1 && "c:\Users\bauti\Downloads\ENGG-1410\"Assignment_1
bash: cd: c:\Users\bauti\Downloads\ENGG-1410" && gcc Assignment_1.c -o Assignment_1 && c:UsersbautiDownloadsENGG-1410"Assignment_1: No such file or directory      

我的代码没有执行。所以现在我很困惑我应该做什么。我什至尝试将 VSCode bin 路径添加到 path 环境变量中,但仍然没有解决方案。如果有人可以尝试帮助我,将不胜感激。

【问题讨论】:

  • scanf("%d", i); -> scanf("%d", &amp;i);
  • 在 C 中,一切都是按值传递的——一个函数接收你传递的东西的副本。如果您编写一个接受参数的 C 函数,然后尝试更新参数,则您需要将指针传递给该对象 - 指针的副本被传递给函数,但它仍然指向同一个位置,因此指针可以更新。因此,对于 scanf,您希望 i 更新,这意味着您需要传递一个指针。
  • 在终端中运行时,您有一个错误的引用:"c:\Users\bauti\Downloads\ENGG-1410\"Assignment_1,它应该在最后,在1 之后。事实上,\ 之前的\ 被视为特殊字符,其含义是“保持后面的" 原样”。这就是为什么\"" 替换,显然该文件不存在。
  • 了解如何进行扫描
  • @JerryJeremiah 但是错误消息提到ENGG-1410"Assignment_1,其中反斜杠消失了,这显然不是故意的

标签: c windows visual-studio-code


【解决方案1】:
#include <stdio.h>
#include <string.h>

int main()
{
    int i;
    printf("What's your number?\n");
    scanf("%d",&i); // & operator was missing
    printf("Number was:%d",i);
    return 0;
}

【讨论】:

    猜你喜欢
    • 2020-02-04
    • 2019-07-17
    • 1970-01-01
    • 2018-01-22
    • 2020-07-03
    • 2022-01-07
    • 1970-01-01
    • 2022-01-24
    • 1970-01-01
    相关资源
    最近更新 更多