【发布时间】:2016-11-30 03:31:35
【问题描述】:
所以我有一个结构,在该结构中我有一个用于存储电话号码的字符数组。格式为 xxxxxxxxxx(x 为 0-9 的数字)。然后,我正在运行一个 for 循环以在打印时格式化这十位数字的显示。
#include <stdio.h>
void clear(void);
struct Student {
int idNumber;
char firstName[25];
char lastName[25];
char cellNumber[15];
char grade, grade2;
char semester[11], semester2[11];
char course[10], course2[10];
};
int main() {
struct Student studentArr[2];
for (int x = 0; x < 2; x++){
printf("For student %d...\n", x+1);
printf("Enter student number: \n");
scanf("%d", &studentArr[x].idNumber);
printf("%d", studentArr[x].idNumber);
printf("Enter student's first name: \n");
scanf("%s", studentArr[x].firstName);
printf("%s", studentArr[x].firstName);
printf("Enter student's last name: \n");
scanf("%s", studentArr[x].lastName);
printf("%s", studentArr[x].lastName);
printf("Enter student's cell number: \n");
scanf("%s", studentArr[x].cellNumber);
printf("%c", &studentArr[x].cellNumber[1]);
printf("(");
//print("%s", studentArr[x].cellNumber);
for(int i = 0; i < 3; i++) {
printf("%s", &studentArr[x].cellNumber[i]);}
printf(")");
for(int i = 3; i < 6; i++){
printf("%s", &studentArr[x].cellNumber[i]);}
printf("-");
for(int i = 6; i < 10; i++){
printf("%s", &studentArr[x].cellNumber[i]);}
printf("Enter course %d: \n", x+1);
scanf("%s", studentArr[x].course);
printf("%s", studentArr[x].course);
printf("Enter semster for course %d: \n", x+1);
scanf("%s", studentArr[x].semester);
printf("%s", studentArr[x].semester);
printf("Enter letter grade for course %d: \n", x+1);
scanf("%s", studentArr[x].grade);
printf("%s", studentArr[x].grade);
clear();
}
}
void clear(void) {
while(getchar() != '\n');
}
这是输出:
如您所见,电话号码的输出完全搞砸了,我也遇到了分段错误。非常感谢任何帮助或建议。
FWIW,我是新手,所以不要太苛刻:)
编辑:将 %s 切换为 %c,现在得到此输出,并且不提示用户输入: Letters instead of numbers
【问题讨论】:
-
打印单个字符使用
printf("%c", studentArr[x].cellNumber[i]);,读取等级字母使用scanf("%c", &studentArr[x].grade);。 -
请复制粘贴实际代码和输出,而不是图像。不是每个人都能看到图像。
-
@NickM 请参阅我评论的第二部分 - 使用
"%c"作为字符。 -
scanf("%s", studentArr[x].grade); printf("%s", studentArr[x].grade);-->scanf(" %c", &studentArr[x].grade); printf("%c\n", studentArr[x].grade);