【发布时间】:2020-10-31 18:00:15
【问题描述】:
我被困在 C 中的编程作业上。用户必须输入一个数字,指定一个数组的大小,该数组的大小不超过 10 个元素,用于存储学生的姓名。这必须在名为 getNames 的主函数之外的单独函数中完成。每个名称最多可包含 14 个字符,并且必须从主函数中调用 getNames。这是我的代码:
#include <stdio.h>
void getNames(char *a, int n){
int i;
for(i=0; i<n; i++){
printf("Enter a name: ");
scanf("%s", &a[i]);
}
}
void printNames(char *a, int n){
int i;
for(i=0; i<n; i++){
printf("%s\n", &a[i]);
}
}
void main(){
int num; //number of names in array 'names'
printf("Num of students: ");
scanf("%d", &num);
char names[num][15]; //each name is 14 characters plus
//a null character
getNames(names[num], num);
printNames(names[num], num);
}
代码编译并运行时没有语法错误,但数组未正确填充。例如:
Num of students: 5
Enter a name: Jeb
Enter a name: Bob
Enter a name: Bill
Enter a name: Val
Enter a name: Matt
返回:
JBBVMatt
BBVMatt
BVMatt
VMatt
Matt
显然写入数组时出现问题,但我不确定它是什么。
对于这个作业,我们的教授坚持我们不能使用任何全局变量。关于我们应该如何实施这一点,他的措辞相当含糊。我的第一个想法是将 getNames 中的 for 循环移动到主函数中,然后重复调用 getNames,但我想要一个将其合并到 getNames 中的解决方案。我是 C 新手,主要处理 Java,所以请多多包涵。任何帮助将不胜感激。
【问题讨论】: