|
|
|
|
||||||
![]() |
|
|
LinkBack | Outils de la discussion |
|
|
#1 |
|
Messages: n/a
Hébergeur: |
Hey everyone,
I apologize in advance for this novice question however I'm not having any luck finding the answer myself. I'm attempting to loop through an array of structures passed to a function, however I'm not sure how to obtain the number of elements in the array. The structure is defined as: typedef struct { time_t creation_date; int priority; char *text; } note; And here's the function prototype: void get_notes(note *notes); How would I dynamically loop through *notes? |
|
|
|
#2 |
|
Messages: n/a
Hébergeur: |
uidzer0 <ben.lemasurier@gmail.com> wrote:
> I'm attempting to loop through an array of structures passed to a > function, however I'm not sure how to obtain the number of elements in > the array. You can't. You have to pass that number in to the function, use a terminator element, or have some other way to find out. This is the same for all arrays, whether or not they're made of structs. Richard |
|
|
|
#3 |
|
Messages: n/a
Hébergeur: |
On Apr 15, 9:13am, r...@hoekstra-uitgeverij.nl (Richard Bos) wrote:
> uidzer0 <ben.lemasur...@gmail.com> wrote: > > I'm attempting to loop through an array of structures passed to a > > function, however I'm not sure how to obtain the number of elements in > > the array. > > You can't. You have to pass that number in to the function, use a > terminator element, or have some other way to find out. This is the same > for all arrays, whether or not they're made of structs. > > Richard Ahh... well that makes more sense - thanks. |
|
|
|
#4 |
|
Messages: n/a
Hébergeur: |
uidzer0 wrote:
> > I'm attempting to loop through an array of structures passed to > a function, however I'm not sure how to obtain the number of > elements in the array. > > The structure is defined as: > typedef struct { > time_t creation_date; > int priority; > char *text; > } note; > > And here's the function prototype: > void get_notes(note *notes); > > How would I dynamically loop through *notes? One way is to hold the pointers to note (i.e. the note* items) in an array terminated with a NULL. Then the function might be: void get_notes(note *notes) { while (*notes) { process_one_note(*notes); notes++; } } but you would be better advised to get rid of the void and return an error indicator. Same for process_one_note() -- [mail]: Chuck F (cbfalconer at maineline dot net) [page]: <http://cbfalconer.home.att.net> Try the download section. ** Posted from http://www.teranews.com ** |
|
|
|
#5 |
|
Messages: n/a
Hébergeur: |
On Tue, 15 Apr 2008 16:59:26 -0400, CBFalconer <cbfalconer@yahoo.com>
wrote: > uidzer0 wrote: > > > > I'm attempting to loop through an array of structures passed to > > a function, however I'm not sure how to obtain the number of > > elements in the array. > > > > The structure is defined as: > > typedef struct { > > time_t creation_date; > > int priority; > > char *text; > > } note; > > > > And here's the function prototype: > > void get_notes(note *notes); > > > > How would I dynamically loop through *notes? > > One way is to hold the pointers to note (i.e. the note* items) in > an array terminated with a NULL. Then the function might be: > OP doesn't have an array of pointers, but one pointer to an array. > void get_notes(note *notes) { > while (*notes) { > process_one_note(*notes); > notes++; > } > } > For an array of pointer you need (modulo spacing) void get_notes (note * * notes) then as you have it. Or (equivalent to the compiler) void get_notes (note * notes [] ) to emphasize the array-of-pointer-ness, but downplay the fact that array parameters/arguments are really pointers; pick your poison. - formerly david.thompson1 || achar(64) || worldnet.att.net |
|
![]() |
| Outils de la discussion | |
|
|