所以我基本上有一個名稱的結構,它必須是dinamically和一個ID。我認爲它可以看起來像這樣。結構函數不能與我的數組一起工作
typedef struct {
char *name;
unsigned int id;
} person;
現在我要與給定的開始寫一個函數:
person *readData();
無論是結構和名稱必須dinamically,我想用malloc函數來做到這一點。對於所有人也應該有一個數組,我們將其命名爲「people [1000]」。
這裏是我與主要功能的說功能的嘗試:
int count = 0;
person *readData() {
int i, len;
char puffer[1000];
printf("Name: ");
scanf_s("%999s", &puffer);
len = strlen(puffer);
people[count].name = (char *)malloc((len + 1)*sizeof(char));
for (i = 0; i < len; i++)
people[count].name[i] = puffer[i];
people[count].name[len] = '\0';
}
void main(void)
{
person *people[1000];
readData();
printf("\n%s\n", people[count].name);
}
嗯,這似乎並沒有這樣的。 Visual Studio在函數中說,「人員」必須是聯合或結構類型。 任何快速輸入?這只是基本的C,因爲我正在開始學習它。
編輯:全碼:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct {
char *name;
unsigned int id;
} person;
person people[1000];
int count = 0;
person *readData() {
int i, len;
char puffer[1000];
printf("Name: ");
scanf_s("%999s", &puffer);
len = strlen(puffer);
people[count].name = (char *)malloc((len + 1)*sizeof(char));
for (i = 0; i < len; i++)
people[count].name[i] = puffer[i];
people[count].name[len] = '\0';
}
void main(void){
readData();
printf("\n%s\n", people[count].name);
}
你的指針('people')的陣列是本地'主()'功能,所以它'READDATA()'是不可能知道它沒有你傳遞它(或使其成爲全球)。你可能不是指'person * readData()',而是'void readData(person * people)'。儘管如此,你的代碼也包含很多其他問題。 – Jite