【发布时间】:2019-10-13 22:49:29
【问题描述】:
我已经做了这个结构
struct dadosPessoais
{
char nome[60];
char end[60];
char cidade[60];
char estado[3];
int cep;
};
typedef struct dadosPessoais dadosPessoais
另外,我已经声明了这些变量和指针
dadosPessoais dp[4], *dpp;
我目前正在尝试做的是从用户接收一些数据并使用 *dpp 指针将这些数据存储在 dp[] 变量中。为此,我制作了这个循环结构
for (i = 0; i < 4; i++)
{
dpp = &dp[i];
printf("-- Dados da %da pessoa --\n", i + 1);
printf("Nome: ");
scanf("%s", dpp->nome);
getchar();
printf("Endereço: ");
scanf("%s", dpp->end);
getchar();
printf("Cidade: ");
scanf("%s", dpp->cidade);
getchar();
printf("Estado: ");
scanf("%s", dpp->estado);
getchar();
printf("Cep: ");
scanf("%d", dpp->cep);
getchar();
system("clear");
}
我知道在使用 scanf 时使用 dpp->field 之类的东西是不正确的,因为箭头运算符 (->) 用于通过使用该结构变量的地址返回一个结构字段值,而不是用于返回结构字段地址本身。但是,如果我尝试使用dpp.field 之类的东西,它仍然不起作用,因为它应该意味着类似&dp[index].field 的东西,所以令人困惑,对吧?这个问题我还没想好怎么解决……
【问题讨论】:
-
节省时间,启用所有警告。启用良好的编译器会抱怨
scanf("%d", dpp->cep);。
标签: c arrays pointers data-structures struct