0
我在下面寫了使用指針讀取/打印結構的代碼。該應用程序正在打印數據,但後來崩潰。似乎是某處愚蠢的錯誤。無法找到確切的問題。我試着在printStruct中使用按值傳遞,並在readStruct中返回結構。沒有問題。當我使用指針時不確定發生了什麼問題。使用指針打印結構時的應用程序崩潰
所有的#include<stdio.h>
#include <inttypes.h>
#include <string.h>
struct student{
char USN[10];
char name[50];
char gender;
uint8_t age;
};
void printStruct (struct student*);
void readStruct(struct student*);
int main() {
uint8_t numStudents;
printf("Enter number of students\n");
scanf("%d",&numStudents);
struct student firstSemStudent[numStudents];
readStruct(firstSemStudent+0);
printStruct(firstSemStudent+0);
return 0;
}
void printStruct (struct student *var1)
{
printf("USN= %s\n",var1->USN);
printf("Name = %s\n",var1->name);
printf("Age = %d\n",var1->age);
printf("Gender = %c\n",var1->gender);
}
void readStruct(struct student *temp)
{
printf("\nEnter USN: ");
fflush(stdin);
gets(temp->USN);
printf("\nEnter Name: ");
fflush(stdin);
gets(temp->name);
printf("\nEnter age\n");
scanf("%d",&temp->age);
printf("\nEnter the Gender as M/F");
fflush(stdin);
scanf("%c",&temp->gender);
}
糾正除fflush()以外的問題後,它工作。但我的問題是:爲什麼有一個gets()和fflush()如果他們不工作?人們如何知道這些問題?如果我們不使用fflush,Scanf也會帶來麻煩。我真的很困惑這是從標準輸入讀取的最佳方式?另外我怎樣才能讀取uint8_t的數據?假設我不想去int或者short int。 – Rajesh
@Rajesh最好的工作方式是使用'fgets()',恕我直言。在您方便的時候閱讀並解析。 –
無符號字符的格式說明符怎麼樣?我不認爲它在那裏。我們如何在不使用%c的情況下讀取8位值?另外我讀了uint8_t,uint16_t等地方是聲明變量的標準方式,因爲它們獨立於架構。任何意見! – Rajesh