Hi ! I would like to generate an array of type char[n][5];
I just dont really figure out how I could do it with malloc or calloc.. I
mean.. I know how to allocate a simple array with both of them; but when it
comes to a 2 dimension array.. I'm stuck.. I mean.. if I ask for char**
array = malloc(5*n*sizeof(char));, it'll return a void*, not a void**..
anyone have an idea ? 7 4384
Eric Boutin wrote: Hi ! I would like to generate an array of type char[n][5];
I just dont really figure out how I could do it with malloc or calloc.. I mean.. I know how to allocate a simple array with both of them; but when it comes to a 2 dimension array.. I'm stuck.. I mean.. if I ask for char** array = malloc(5*n*sizeof(char));, it'll return a void*, not a void**.. anyone have an idea ?
Output from new.c:
array[0][0] is 0
array[0][1] is 1
array[0][2] is 2
array[0][3] is 3
array[0][4] is 4
array[1][0] is 10
array[1][1] is 11
array[1][2] is 12
array[1][3] is 13
array[1][4] is 14
array[2][0] is 20
array[2][1] is 21
array[2][2] is 22
array[2][3] is 23
array[2][4] is 24
/* BEGIN new.c */
#include <stdio.h>
#include <stdlib.h>
#define N 3
int main(void)
{
size_t n, a, b;
char (*array)[5];
n = N;
array = malloc(n * sizeof *array);
if (!array) {
fputs("I'm tired\n", stderr);
exit(EXIT_FAILURE);
}
puts("Output from new.c:\n");
for (a = 0; a != n; ++a) {
for (b = 0; b != 5; ++b)
array[a][b] = (char)(10 * a + b);
}
for (a = 0; a != n; ++a) {
for (b = 0; b != 5; ++b) {
printf("array[%u][%u] is %u\n",
(unsigned)a,
(unsigned)b,
(unsigned)array[a][b]);
}
}
return 0;
}
/* END new.c */
Eric Boutin wrote: Hi ! I would like to generate an array of type char[n][5];
I just dont really figure out how I could do it with malloc or calloc.. I mean.. I know how to allocate a simple array with both of them; but when it comes to a 2 dimension array.. I'm stuck.. I mean.. if I ask for char** array = malloc(5*n*sizeof(char));, it'll return a void*, not a void**.. anyone have an idea ?
Read the C FAQ, Question 6.16 http://www.eskimo.com/~scs/C-faq/q6.16.html
Eric Boutin wrote: Hi ! I would like to generate an array of type char[n][5];
I just dont really figure out how I could do it with malloc or calloc.. I mean.. I know how to allocate a simple array with both of them; but when it comes to a 2 dimension array.. I'm stuck.. I mean.. if I ask for char** array = malloc(5*n*sizeof(char));, it'll return a void*, not a void**.. anyone have an idea ?
You clearly need a better C book. K&R2 comes to mind. Chapter 5
pertains. There is also Steve Summit's C FAQ. Section 6 pertains. Read
more.
--
Joe Wright http://www.jw-wright.com
"Everything should be made as simple as possible, but not simpler."
--- Albert Einstein ---
sorry I didn't read this point in the FAQ..
sorry
"Nejat AYDIN" <ne********@superonline.com> a écrit dans le message de
news:3F***************@superonline.com... Eric Boutin wrote: Hi ! I would like to generate an array of type char[n][5];
I just dont really figure out how I could do it with malloc or calloc..
I mean.. I know how to allocate a simple array with both of them; but
when it comes to a 2 dimension array.. I'm stuck.. I mean.. if I ask for
char** array = malloc(5*n*sizeof(char));, it'll return a void*, not a void**.. anyone have an idea ?
Read the C FAQ, Question 6.16 http://www.eskimo.com/~scs/C-faq/q6.16.html
Thanks !
"pete" <pf*****@mindspring.com> a écrit dans le message de
news:3F**********@mindspring.com... Eric Boutin wrote: Hi ! I would like to generate an array of type char[n][5];
I just dont really figure out how I could do it with malloc or calloc..
I mean.. I know how to allocate a simple array with both of them; but
when it comes to a 2 dimension array.. I'm stuck.. I mean.. if I ask for
char** array = malloc(5*n*sizeof(char));, it'll return a void*, not a void**.. anyone have an idea ?
Output from new.c:
array[0][0] is 0 array[0][1] is 1 array[0][2] is 2 array[0][3] is 3 array[0][4] is 4 array[1][0] is 10 array[1][1] is 11 array[1][2] is 12 array[1][3] is 13 array[1][4] is 14 array[2][0] is 20 array[2][1] is 21 array[2][2] is 22 array[2][3] is 23 array[2][4] is 24
/* BEGIN new.c */
#include <stdio.h> #include <stdlib.h>
#define N 3
int main(void) { size_t n, a, b; char (*array)[5];
n = N; array = malloc(n * sizeof *array); if (!array) { fputs("I'm tired\n", stderr); exit(EXIT_FAILURE); } puts("Output from new.c:\n"); for (a = 0; a != n; ++a) { for (b = 0; b != 5; ++b) array[a][b] = (char)(10 * a + b); } for (a = 0; a != n; ++a) { for (b = 0; b != 5; ++b) { printf("array[%u][%u] is %u\n", (unsigned)a, (unsigned)b, (unsigned)array[a][b]); } } return 0; }
/* END new.c */
Thanks for book suggestion
"Joe Wright" <jo********@earthlink.net> a écrit dans le message de
news:3F**********@earthlink.net... Eric Boutin wrote: Hi ! I would like to generate an array of type char[n][5];
I just dont really figure out how I could do it with malloc or calloc..
I mean.. I know how to allocate a simple array with both of them; but
when it comes to a 2 dimension array.. I'm stuck.. I mean.. if I ask for
char** array = malloc(5*n*sizeof(char));, it'll return a void*, not a void**.. anyone have an idea ?
You clearly need a better C book. K&R2 comes to mind. Chapter 5 pertains. There is also Steve Summit's C FAQ. Section 6 pertains. Read more. -- Joe Wright http://www.jw-wright.com "Everything should be made as simple as possible, but not simpler." --- Albert Einstein ---
Eric Boutin wrote: Thanks !
You're welcome.
"pete" <pf*****@mindspring.com> a écrit dans le message de news:3F**********@mindspring.com... Eric Boutin wrote: Hi ! I would like to generate an array of type char[n][5];
I just dont really figure out how I could do it with malloc or calloc..
array = malloc(n * sizeof *array);
The way that this particular program was written,
it wasn't necessary to free(array),
but I believe that it's good to be in the habit of freeing
whatever is allocated, and I forgot to do that. }
free(array);
return 0; }
/* END new.c */
--
pete This thread has been closed and replies have been disabled. Please start a new discussion. Similar topics
by: MK |
last post by:
I am a newbie. Please help. The following warning is issued by gcc-3.2.2
compiler (pc Linux):
==================================================================
read_raw_data.c:51: warning:...
|
by: Harsimran |
last post by:
Can any one explain what are far pointers and what is the difference
between malloc and calloc .Which is better ?
|
by: smartbeginner |
last post by:
main()
{
int i;
int *a;
a=calloc(4,sizeof(*a));
/* The above code I know will not compile .But why
cant I allocate space
for all 4 integers i need to store */
for(i=0;i<2;i++)...
|
by: entitledX |
last post by:
Hi, I'm trying to use the HDF library to read a few HDF files that I
need to process. The data in each file varies in rows, but the
columns remain constant. Because of that, I had dynamically...
|
by: Yuri_Юрий |
last post by:
I'm confused about the VARIABLE LENGTH ARRAYS.
{scanf("%d",&n);float a;}
In which compiler can I use it?
I tried VC++6.0 SP6,but it's reported error:CONSTANT EXPRESSION!
Another question,
What...
|
by: kleary00 |
last post by:
Hi,
I am writing a function that needs to return an array of strings and I
am having some trouble getting it right. I need some help.
Here is what I consider an array of 100 strings:
char...
|
by: weidongtom |
last post by:
Hi,
I've written the code that follows, and I use the function add_word(),
it seems to work fine
*before* increase_arrays() is called that uses realloc() to allocate
more memory to words. But...
|
by: Michel Rouzic |
last post by:
Hi,
I've recently met issues with my program which can only be explained
by heap corruption, so I've tried debugging my program with Valgrind,
and here's what I get with the following...
|
by: Francois Grieu |
last post by:
Hello, I'm asking myself all kind of questions on allocating
an array of struct with proper alignment.
Is the following code oorrect ?
I'm most interested by the statement
t =...
|
by: Charles Arthur |
last post by:
How do i turn on java script on a villaon, callus and itel keypad mobile phone
|
by: aa123db |
last post by:
Variable and constants
Use var or let for variables and const fror constants.
Var foo ='bar';
Let foo ='bar';const baz ='bar';
Functions
function $name$ ($parameters$) {
}
...
|
by: emmanuelkatto |
last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud.
Please let me know.
Thanks!
Emmanuel
|
by: nemocccc |
last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
|
by: Sonnysonu |
last post by:
This is the data of csv file
1 2 3
1 2 3
1 2 3
1 2 3
2 3
2 3
3
the lengths should be different i have to store the data by column-wise with in the specific length.
suppose the i have to...
|
by: marktang |
last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
|
by: Hystou |
last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
|
by: Oralloy |
last post by:
Hello folks,
I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>".
The problem is that using the GNU compilers,...
|
by: jinu1996 |
last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven...
| |