【发布时间】:2018-10-14 10:37:39
【问题描述】:
我的程序应该为一个学生捕获三项数据并将它们写入一个文件; ID、姓名和课程。
名称和课程包含空格。 它运行,但是当我检查文件时,只写了 ID 和名称。是因为我捕获数据的方式吗?
我的代码:
#include <stdio.h>
#include <string.h>
struct StudentDetails{
char ID[50];
char Name[50];
char Course[50];
}aStudent;
void capture(){
char ch;
printf("Enter ID: ");
scanf ("%s", &aStudent.ID);
printf("Enter Name: ");
scanf ("%s ", &aStudent.Name);
printf("Enter Course: ");
scanf ("%s ", &aStudent.Course);
ch = getchar();
}
void saveToFile(){
FILE *studentDetails;
studentDetails = fopen("students.txt", "a");
fprintf(studentDetails,"%s\t%s\t%s\n",aStudent.ID, aStudent.Name,aStudent.Course);
fclose(studentDetails);
}
void main(){
capture();
saveToFile();
}
【问题讨论】:
-
您可能希望提高编译器的警告级别(对于 GCC 传递
-Wall -Wextra -pedantic),阅读并理解编译期间发出的警告,然后修复代码直到不再给出警告.不要盲目抛弃警告(d)。 -
我在哪里放置这段代码 aStudent.ID[strcspn(aStudent.ID,"\n")]=0