gpt4 book ai didi

c - 请求非结构或 union 中的成员 'latitude'

转载 作者:行者123 更新时间:2023-11-30 17:09:18 26 4
gpt4 key购买 nike

我希望用户将信息输入到结构数组中,但却收到 4 个相同类型的错误,即:

request for member 'locName' in something not a structure or union|
request for member 'locDesc' in something not a structure or union|
request for member 'latitude' in something not a structure or union|
request for member 'locName' in something not a structure or union|

行数:

        printf("Please enter the name for the location: \n");
scanf("%s\n", &*myArray->locName); //Gets the user input for the Location Name
printf("Now enter the description:");
scanf("%s\n", &*myArray->locDesc); //Gets the user input for the Location Description
printf("Now enter the value for the latitude:");
scanf("%lf\n", &*myArray->latitude); //Gets the user input for the Latitude
printf("Now enter the value for the longitude:");
scanf("%lf\n", &*myArray->longitude); //Gets the user input for the Latitude

有人可以指出我在代码中犯的错误吗? 注意,如果数组已满,我需要resize()数组的大小!

#include <stdio.h>
#include <stdlib.h>

//structure Location
typedef struct Location{
char locName[35];
char locDesc[85];
float latitude;
float longitude;
} LocationArray;

//Menu that receives the user input
//and performs corresponding operations based
//on the menu choice
void printMenu(LocationArray **myArray, int *count, int max){
printf("Hello! Please choose from the menu: ");
printf("\nType 'A' or 'a' for adding additional location to the array");
printf("\nType 'P' or 'p' for printing the current list of locations");
printf("\nType 'Q' or 'q' to quit the program");

char input = 0;
scanf("%c", &input);

//Handles the invalid character input
//exits if the character does not correspond
//to the valid menu option
if(input != 'A' || input != 'a'
|| input != 'P' || input != 'p'
|| input != 'Q' || 'q'){
printf("Invalid character! Try again!");
exit(0);
}
//Calls other functions
//based on the character input
else{
switch(input){
case 'A':
case 'a':
addInfo(*myArray, *count, max); //Calls function that adds more locations into the array
break;

case 'P':
case 'p':
printList(*myArray); //Calls the function that prints the current list of locations
break;
case 'Q':
case 'q':
quitProgram(); //Calls the function that terminates the program
break;
}
}
}

//Adds info into the array of structures
void addInfo(LocationArray **myArray, int *count, int max){
if(*count == max){ // Checks if the array is already full
resizeArray(*myArray, max); //Resizes the array if it's full
}
else{ //Else, a used fills it out
printf("Please enter the name for the location: \n");
scanf("%s\n", &*myArray->locName); //Gets the user input for the Location Name
printf("Now enter the description:");
scanf("%s\n", &*myArray->locDesc); //Gets the user input for the Location Description
printf("Now enter the value for the latitude:");
scanf("%lf\n", &*myArray->latitude); //Gets the user input for the Latitude
printf("Now enter the value for the longitude:");
scanf("%lf\n", &*myArray->longitude); //Gets the user input for the Latitude

*count++; //Increment the count
}
}

//Resizes(doubles) the array size if the max limit is achieved
int resizeArray(LocationArray **myArray, int numberOfLoc){
LocationArray *temp;
temp = (LocationArray*)realloc(*myArray, numberOfLoc*sizeof(LocationArray));

//Checks if the memory heap is exhausted
if(temp == NULL){
printf("The memory heap is exhausted!");
return 0; //returns 0 that represents the heap is exhausted
}
else{
*myArray = temp;
free(myArray);
return 1; //If the heap is not exhausted, then return 1 (success)
}
}

int main()
{
printf("How many locations would you like to be inside the array?\n");
int numberOfLoc = 0; //variable for storing the size of the LocationArray
scanf("%d", &numberOfLoc); //gets the user input and stores in numerOfLoc

LocationArray *myArray; //declares a LocationArray with the size of numberOfLoc
myArray = (LocationArray*)malloc(numberOfLoc*sizeof(LocationArray));

//Print the menu
int count = 0;
printMenu(&myArray, &count, numberOfLoc);

//Free the pointer
free(myArray);
return 0;
}

最佳答案

它是一个 struct 数组,我们需要一个索引来指定您要在 addInfo 中添加的特定结构,查看此摘录中的最后一行,并将 mvArrav[0] 中的 0 替换为 mvArrav[i]其中 i 是索引。您需要修改逻辑以传递索引。

 void addInfo(LocationArray **myArray, int *count, int max){
if(*count == max){ // Checks if the array is already full
resizeArray(*myArray, max); //Resizes the array if it's full
}
else{ //Else, a used fills it out
printf("Please enter the name for the location: \n");
scanf("%s\n", myArray[0]->locName); //Gets the user input for the Loca

关于c - 请求非结构或 union 中的成员 'latitude',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33336902/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com