[英]C: Manipulating structs in separate functions
我不確定這是否適合此類論壇,因為這是一個非常具體的問題,但是我還是會問。
我有三個文件:
main.c
functions.c
functions.h
在functions.c
和functions.h
我創建了一個struct
,並將其定義為一種稱為control
的類型:
typedef struct
{
char cUp, cLeft, cDown, cRight
} control;
我創建了一個control
實例,並在main.c
的開頭立即初始化了一個稱為Keys
的實例:
#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
字符中的值更改為某些垃圾值。
這是為什么?
如果您需要有關我使用的其他功能的更多信息,請詢問。
很抱歉,這對您來說太低了,太愚蠢了,但是我正在嘗試學習,這就是為什么我要問。
謝謝 :)
您需要從options_f()
函數返回一個值(可能return Keys;
)。 這甚至不是有效的C代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.