作者tarobear (塔落熊)
看板C_and_CPP
標題[問題] C的結構問題
時間Mon May 25 11:47:42 2015
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
C
問題(Question):
書本範例: 利用學生ID搜尋,找出學生的資料
餵入的資料(Input):
#include<stdio.h>
struct mydata
{
int id;
char name[12];
int score;
}buffer;
int main(void)
{
FILE *fptr;
int idkey;
printf("Input ID to search");
scanf("%d",&idkey);
fptr=fopen("c:\\c_prog\\abc.txt","r");
if(fptr!=NULL)
{
while(!feof(fptr)&&(idkey!=buffer.id))
{
fread(&buffer,sizeof(buffer),1,fptr)
if(buffer.id==idkey)
{
printf("Yes! You got it!\n");
printf("Student's ID:%d\n",buffer.id);
printf("Student's NEME:%s\n",buffer.name);
printf("Student's score:%d\n",buffer.score);
}
}
}
...
...(以下省略
}
補充說明(Supplement):
程式打得有點多, 主要是想問為何 buffer.id 就可以找到資料
而不需要像 buffer
[1].id 這樣呢?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.143.65.117
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1432525664.A.B13.html
→ Feis: 這個問題很有趣. 為什麼你覺得需要加[] ? 而且還是 1 ? 05/25 11:59
→ tarobear: 我只是舉例@@ 因為我想到的方式是用for找資料... 05/25 12:06
→ tarobear: 我想說結構是一筆一筆資料存起來的這樣 05/25 12:08
→ Feis: 這裡的 buffer 每次只存其中一筆. 05/25 12:25
→ tarobear: 所以是buffer只有一筆資料, 不需要buffer[i].id的意思 05/25 13:06
→ tarobear: 另一個問題是fread(,,1,) 這個1是取1筆資料後 05/25 13:13
→ tarobear: 會跳至下一筆資料嗎? 像是getc 那樣? 05/25 13:14
推 overhead: 你畫面上的buffer不是array啊 為何會須要[]? 05/28 00:02