【问题标题】:Error When Inputting Data to Be Written to File输入要写入文件的数据时出错
【发布时间】:2015-12-07 13:52:34
【问题描述】:

所以我正在尝试编写一个程序,允许您输入电路的电压和电阻,然后计算出电路的电流并将其写入 .txt 文件。代码如下:

void main()
{

float V=0;
float R=0;
float I=0;

printf("Enter your voltage value...\n");
scanf("%f&V", V);
printf("Enter your resistance value...\n");
scanf("%f&R", R);

I = V / R;

FILE *f = fopen("C:/Users/Joe/Desktop/file.txt", "w");
if (f == NULL)
{
    printf("Error opening file!\n");
    exit(1);
}
else
{

    fprintf(f, "%f %f %f\n", V, R, I);
}

fclose(f);

}

但是,当我输入数据时,出现以下错误:

“第一个 project.exe 中 0x566B96AA (msvcr120d.dll) 处的未处理异常:0xC0000005:访问冲突写入位置 0x00000000。”

有谁知道这意味着什么以及我该如何解决?

谢谢你,乔。

【问题讨论】:

  • scanf("%f&V", V);应该是 scanf("%f", &V)

标签: c file writing


【解决方案1】:

就像 Raghu 在 cmets 中所说,您需要将
scanf("%f&V", V); 更改为
scanf("%f", &V);
scanf("%f&R", R); 也是如此
更改为 scanf("%f", &R);

【讨论】:

  • 谢谢!我一直在查看整个程序,这归结为一个愚蠢的错误,该死。
【解决方案2】:

这里要提两件事。

  1. scanf() 一起提供的格式字符串应与输入的精确匹配。
  2. 要将扫描的值存储到参数中,您需要传递与参数相同的地址。

所以,基本上。你的输入命令应该是

scanf("%f", &V);

scanf("%f", &R);

而不是

 scanf("%f&R", R);

scanf("%f&V", V);

也就是说,

  1. 您应该始终检查scanf() 和函数系列的返回值。
  2. void main() 不太正确。您应该使用 int main(void) 代替。

【讨论】:

    【解决方案3】:

    您应该在scanf 的第二个参数中传递变量的地址。

    #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
        float V=0;
        float R=0;
        float I=0;
        printf("Enter your voltage value:");
        scanf("%f",&V);
        printf("\nEnter your resistance value:");
        scanf("%f", &R);
        I = V / R;
    
        FILE *f = fopen("C:/Users/Joe/Desktop/file.txt", "w");
        if (f == NULL)
        {
            printf("\nError opening file!\n");
            exit(1);
        }
        else
        {
            fprintf(f, "%f %f %f\n", V, R, I);
        }
        fclose(f);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-18
      • 2018-02-10
      相关资源
      最近更新 更多