[英]C programming scanf assistance
我试图建立类的表单/ GPA计算器,但进入的使用scanf函数类的量时,输出为6487576不管是什么我进入。
int main()
{
int opt;
int c;
printf("*******************************\n");
printf("** Fanshawe Grade Calculator **\n");
printf("*******************************\n");
printf("Please Choose an Option:\n");
printf("[1] Enter Your Marks\n");
printf("[2] Quit\n");
scanf("%d", &opt);
switch(opt) {
case 1 :
printf("********************************************************\n");
printf("** Enter Your Marks For Your Courses (Up to 10 Only): **\n");
printf("********************************************************\n");
scanf("%i", &c);
printf("You Have Entered %i Classes!\n", &c);
/*int i;
for(i=1;i=c;i++) {
printf("Enter Your Mark for Class #%i\n", &i);
}*/
break;
case 2 :
printf("GoodBye!");
exit(0);
break;
}
return 0;
}
请帮助!
当将%i
与scanf()
,它还可以让您输入十六进制和八进制数字(这不是此处说明的问题)。 但是,在使用printf()
时不应使用&
,因为它会显示变量的内存位置,而不是存储在变量中的值。
尝试这个:
case 1 :
printf("********************************************************\n");
printf("** Enter Your Marks For Your Courses (Up to 10 Only): **\n");
printf("********************************************************\n");
scanf("%d", &c);
printf("You Have Entered %d Classes!\n", c);
break;
printf("You Have Entered %i Classes!\\n", &c)
输出变量c
的地址(&c占用地址),即,输出存储单元的编号。 由于要传递变量的值,因此不应使用取变量&
地址的运算符。
printf("You Have Entered %i Classes!\n", c);
这里有两个问题。 首先,您需要包括以下标题:
#include <stdio.h> // declares functions like printf and scanf
#include <stdlib.h> // declares functions like exit
如果不包括这些头文件,则编译器将不知道如何执行它们或它们的确切格式。 当您尝试编译时,警告将无济于事。 有一些很好的网站可以做到这一点; 只需在Google中搜索“ c exit()”之类的内容,它就会告诉您将来需要哪些标头。 编译此代码时,我使用了gcc main.c -Wall
强制显示所有警告。
其次,在两种情况下都使用c
的地址。 当您打印c
的值时,实际上是在打印c
的地址,而不是值。 scanf()
接受变量的地址来存储值,而printf()
接受变量本身。 该代码应看起来像这样:
scanf("%i", &c);
printf("You Have Entered %i Classes!\n", c);
初始化变量总是一个好主意。 这样,您知道什么时候分配不正确或根本没有分配。 我忘记分配我的变量一段时间,而在另一台机器上编译时,它不起作用。 这是因为不同的机器将以不同的方式初始化变量。 只需将代码更改为以下内容:
int opt = 0;
int c = 0;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.