我不确定这是否适合这种论坛,因为这是一个非常具体的问题,但无论如何我都会问。
我有三个文件:
main.c
functions.c
functions.h
在functions.c
和functions.h
我创建了struct
,并将其定义为名为control
的类型:
typedef struct
{
char cUp, cLeft, cDown, cRight
} control;
我创建了control
的实例,并在Keys
的开头初始化了名为main.c
的实例:
#include <stdio.h>
#include <stdlib.h>
#include "functions.h"
int main()
{
control Keys = {'w', 'a', 's', 'd'};
//...
}
我将Keys
传递给名为options_f
的函数,该函数以control
作为参数并返回control
。函数原型放在functions.h
:
//in functions.h:
control options_f(control Keys);
//in main.c:
Keys = options_f(Keys);
options_f
位于functions.c
,如下所示:
control options_f(control Keys)
{
system("cls");
printf("\nENTER | Place your symbol.\n\n1| %c |Move up.\n\n2| %c |Move left.\n\n3| %c |Move down.\n\n4| %c |Move right.\n", Keys.cUp, Keys.cLeft, Keys.cDown, Keys.cRight);
printf("\n\nTo change the keys: NUMBER,SYMBOL (enter 0 to return to menu).\n\n");
int iTemp = 0;
char cTemp = '\0';
scanf("%i,%c", &iTemp, &cTemp);
switch(iTemp)
{
case 0:
break;
case 1:
Keys.cUp = cTemp;
Keys = options_f(Keys);
break;
case 2:
Keys.cLeft = cTemp;
Keys = options_f(Keys);
break;
case 3:
Keys.cDown = cTemp;
Keys = options_f(Keys);
break;
case 4:
Keys.cRight = cTemp;
Keys = options_f(Keys);
break;
default:
printf("Please enter a number from 1-4.");
stop_f(2);
options_f(Keys);
break;
}
}
该功能允许我更改Keys
中字符的内容。输入0
并返回菜单后,我再次致电options_f
。只有它将Keys
个字符中存储的值更改为一些垃圾值。
为什么?
如果您需要有关我使用的其他功能的更多信息,请询问 我很抱歉,如果这对你来说看起来非常低级和愚蠢,但我正在努力学习,这就是我要问的原因。
谢谢:)
答案 0 :(得分:4)
您需要从options_f()
函数返回一个值(可能是return Keys;
)。这甚至不是有效的C代码。