我在使用结构数组时遇到了一些问题,只需列出它们并添加它们即可。我对发生的事情并不是很确定,我已经搜索了几个朋友,并且他们已经建议它与内存分配有关,另一个人说不需要内存分配,我的代码中存在问题。
我一直无法找到问题所在,并且想知道是否有人能够指出我走向错误的方向。
如果代码看起来不正确,我很抱歉 - 不确定如何在网站上实现它。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct data{
int testone;
int testtwo;
}data;
struct data _dataStore[25];
int dataCount = 0;
int addData(struct data __dataStore[dataCount]){
printf("\n\t\t\tPacket Source - ");
scanf("%i", &_dataStore[dataCount].testone);
printf("\t\t\tPacket Destination - ");
scanf("%i", &_dataStore[dataCount].testtwo);
system("CLS");
return 0;
}
void listData(struct data _dataStore[25]){
int i = 0;
for (i = 0; i < dataCount; i++){
printf("data stored - %i",dataCount);
printf("%i___%i \n", _dataStore[dataCount].testone,_dataStore[dataCount].testtwo);
}
}
int main(){
char choice;
do{
printf("\t\t\t Counter - %i", dataCount+1);
printf("\n\t\t\t1 - Add data. \n");
printf("\t\t\t2 - List data. \n");
printf("\n\t\t\tEnter your choice - ");
fflush(stdin);
choice = getchar();
getchar();
switch(choice){
case '1':
addData(&_dataStore[dataCount]);
dataCount++;
system("CLS");
break;
case '2':
system("CLS");
listData(&_dataStore[dataCount]);
break;
default:
printf("Invalid input \n");
break;
}
}while (choice != '5');
return 0;
}
答案 0 :(得分:2)
有很多明显的错误,例如:
for (i = 0; i < dataCount; i++){
printf("data stored - %i",dataCount);
printf("%i___%i \n", _dataStore[dataCount].testone,_dataStore[dataCount].testtwo);
}
}
我怀疑你想说_dataStore[i]
。另外,我建议使用更合理的函数原型:
int addData(struct data* __dataStore, int arrayLen)
答案 1 :(得分:0)
以下是修正后的代码,对我来说很有用:
OLD_REV=$2
NEW_REV=$3
if [ $OLD_REV == "0000000000000000000000000000000000000000" ]; then
OLD_REV=$(git merge-base master $NEW_REV)
fi;
git diff --name-only $OLD_REV $NEW_REV
请注意以下内容:读/写整数与%d不是%i,listData()中的索引应该是我不是dataCount,我删除了函数不需要的参数,因为变量是全局的,我在switch()中添加了一个新案例,以便在退出时打印出更好的消息,而不是&#34;无效的输入&#34;。
您使用的所有变量都是静态分配的,因此您不需要内存分配。