【发布时间】:2014-01-31 13:01:20
【问题描述】:
我对 C 编程很陌生,但对其他语言有一些经验。
我目前正在学习结构和指针。我的任务是使用结构和指针对一些名称进行排序。
我首先创建了一个结构和一个函数来交换两个名称。当我想用结构声明一个数组时,我就是不知道出了什么问题。
这是我编译时遇到的错误:
pr.c:29:22: error: expected expression
studenten[i]={s[i][0],s[i][1],s[i][2]};
^
1 error generated.
这里有一些代码:
#include <stdio.h>
#define MAXSTUDENT 2
typedef struct {
char *firstname;
char *pre;
char *lastname;
} student;
void swap(student **a,student **b) {
student *temp;
temp=*a;
*a=*b;
*b=temp;
}
int main () {
int i;
char *s[MAXSTUDENT][3]={{"John"," the ","Way"},{"John"," ","Smith"}};
student *studenten[MAXSTUDENT];
for (i=0;i<MAXSTUDENT;i++) {
studenten[i]={s[i][0],s[i][1],s[i][2]};
}
printf("%s%s%s - %s%s%s\n",studenten[0]->firstname,studenten[0]->pre,studenten[0]->lastname,studenten[1]->firstname,studenten[1]->pre,studenten[1]->lastname);
swap(&studenten[0],&studenten[1]);
printf("%s%s%s - %s%s%s\n",studenten[0]->firstname,studenten[0]->pre,studenten[0]->lastname,studenten[1]->firstname,studenten[1]->pre,studenten[1]->lastname);
}
【问题讨论】:
-
到底是什么问题?你有错误吗?如果有,在哪里?
-
添加到问题中,谢谢
-
我们不允许与 strcpy 一起使用,我们必须使用指针来完成
-
@APerson 他正在交换
swap中的指针。他使用它的方式,swap()将交换两个数组位置(其中每个位置都是指向学生的指针)。它实际上并没有交换学生的名字,它交换了数组中的位置。所以是的,他在swap()内部交换指针,但不确定这是否是他想要的。