输入要写入文件

时间:2015-12-07 13:52:35

标签: c file writing

所以我试图编写一个程序,允许你输入电路的电压和电阻,然后计算出电路的电流并将其写入.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。"

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

谢谢你,乔。

3 个答案:

答案 0 :(得分:2)

就像Raghu在评论中所说的那样,您需要将scanf("%f&V", V);更改为scanf("%f", &V);,而scanf("%f&R", R); 更改为scanf("%f", &R);

答案 1 :(得分:1)

这里要提两件事。

  1. 提供scanf()时的格式字符串应与确切输入匹配。
  2. 要将扫描值存储到参数中,您需要传递与参数相同的地址。
  3. 所以,基本上。你的输入命令应该是

    scanf("%f", &V);
    

    scanf("%f", &R);
    

    而不是

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

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

    那就是说,

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

答案 2 :(得分:0)

您应该在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);
}