나는 인터넷 검색을하고, 반 친구들에게 물었고, 마침내 교수님에게이 특별한 문제에 대해 물었습니다. 그러나 아직 해결책을 찾지 못했습니다. 나는 누군가가 나를 도울 수 있기를 바라고 있습니다.구조체 배열에서 변수를 편집하는 방법은 무엇입니까?
기본적으로 구조체 당 4 가지 정보 (국가 이름, 국가 수, 국가 및 국가 밀도)를 포함하는 구조체 배열을 만들어야합니다. 이 정보는 .txt 문서의 배열 구조체에 기록됩니다. 이 정보는 상기 어레이로부터 콘솔 상에 기록 될 것이다.
배열의 구조체에 무엇이든 쓰려고 시도 할 때 2 개의 오류가 발생합니다. "const char [8] '에서'char [30] '로 변환 할 수없고'operand '[]'는 이러한 피연산자와 일치합니다. 피연산자 유형은 CountryStats [int]"입니다.
countries[0].countryName = "A";
가 난 단지 구조체를 사용하기 시작했습니다 명심 이것은 내가 배열을 처음 사용 : 이러한 오류는 라인을 참조 모두. 또한 벡터와는 달리 배열을 사용해야합니다.
여기 내 코드입니다 :
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
struct CountryStats;
void initArray(CountryStats *countries);
const int MAXRECORDS = 100;
const int MAXNAMELENGTH = 30;
struct CountryStats
{
char countryName[MAXNAMELENGTH];
int population;
int area;
double density;
};
// All code beneath this line has been giving me trouble. I need to easily edit the
// struct variables and then read them.
int main(void)
{
CountryStats countries[MAXRECORDS];
initArray(*countries);
}
void initArray(CountryStats countries)
{
countries[0].countryName = "A";
}
난 그냥 배열 내의 구조체에 정보를 기록하고 콘솔에 떨어져 그것의 정보를 읽는 방법을 알아 내려고 시도하고 지금부터. 이것에 대한 해결책을 찾은 후에는 다른 모든 것이 제자리에 있어야합니다.
오, 그리고 마지막주의 사항 : 아직 포인터 (*)의 기능을 아직 알지 못했습니다. 저는 과거의 프로그래밍 교육이 주로 자바로 진행 되었기 때문에 C++에 대한 새로운 지식을 가지고 있습니다. 이 코드에있는 포인터의 모든 포함은이 문제를 해결하기 위해 내 급우 및 교수의 영향을 받았습니다.
미리 감사드립니다.
void initArray(CountryStats *countries);
을하지만위한 :
"이 코드의 모든 포인터는이 문제를 해결하기 위해 동료와 교수님의 영향을 받았습니다." - "이 문제를 복잡하게 만들려고 노력하다"는 문제가 해결되었습니다. – Shoe
수업은 배열에 할당 할 수 없다는 것을 결코 가르쳐주지 않으셨습니까? C 문자열을 복사하기 위해서는'strcpy()'를 사용해야한다. 왜'std :: string'을 사용하지 않습니까? – Barmar
country라는 단일 CountryStats 포인터를 사용하는 것이 약간 잘못된 것입니다. 또한, CoutnryStats 구조체를 초기화하고, 그다지 잘못 표시되지 않는 한 역 참조를하려고합니다. – BWG