size of char array in c


 
Thread Tools Search this Thread
Top Forums Programming size of char array in c
# 1  
Old 10-23-2007
size of char array in c

i have to store a data more than 100000.
i don't know the size of the data whether it may be 100000 or 1000000.
so how can i define variable size;
example
char abc[1000000];
but i don't know the size so how can i give array size??
in one sentence
how can i give the array size dynamically so that i can store the data from 1 to an infinte characters
thank u
sree
# 2  
Old 10-23-2007
Code:
#include <stdlib.h>

char *storage=NULL;
storage=malloc(num_of_bytes + 1);
if(storage==NULL)
{
     perror("memory error");
     exit(1);
}
/* play with storage here 
*
*/
free(storage);

# 3  
Old 10-23-2007
thank u,
ok but we don't know the value of num_of_bytes value?
actually iam reading from webpage using curl socket.i don't know how much data it amy come.
so please show me the solution
# 4  
Old 10-23-2007
Quote:
Originally Posted by phani_sree
how can i give the array size dynamically so that i can store the data from 1 to an infinte characters
Your expectations are unrealistic. No computer has an infinite amount of memory. The best you can do is allocate some finite space, process it, and then process the next portion of an infinite input.

Jim Mcnamara's code will allow you to declare arrays of variable size. I think you may be saying is that you don't know the amount of memory up front. If that is the case, you can allocate a reasonable amount of memory and try to reallocate (man realloc()) a larger chunk when you find you need more space.
# 5  
Old 10-23-2007
Two basic solutions

1. keep reading in 512 byte buffers and make a linked list of those buffers where the struct looks something like

struct buffer { struct buffer *next; long length; unsigned char data[512]; };

2. allocate a block using malloc of length 512 bytes and read into that, if you did not fill the buffer then read again in the remaining space
if you get a read of zero bytes then that is the end of stream indicator
else you still have more to read, reallocate the ptr with a size+=512, and go back to reading again.
# 6  
Old 10-25-2007
Quote:
Originally Posted by phani_sree
thank u,
ok but we don't know the value of num_of_bytes value?
actually iam reading from webpage using curl socket.i don't know how much data it amy come.
so please show me the solution
If you read from socket HTTP/1.1 response then you can determine the size of the data from Content-Length header. But be aware of chunked responses, i.e.


Code:
HTTP/1.1 200 OK
Date: Fri, 31 Dec 1999 23:59:59 GMT
Content-Type: text/plain
Transfer-Encoding: chunked

1a; ignore-stuff-here
abcdefghijklmnopqrstuvwxyz
10
1234567890abcdef
0
some-footer: some-value
another-footer: another-value
[blank line here]

what corresponds to

Code:
HTTP/1.1 200 OK
Date: Fri, 31 Dec 1999 23:59:59 GMT
Content-Type: text/plain
Content-Length: 42
some-footer: some-value
another-footer: another-value

abcdefghijklmnopqrstuvwxyz1234567890abcdef


see RFC 2616
# 7  
Old 10-25-2007
There is no guarantee every webserver uses HTTP/1.1.
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. Programming

Returning char array

I want to return a char array to the main() function, but its returning garbage value. #include<stdio.h> //#include<conio.h> #include<string.h> char* strtrmm(); int main() { char str1,c1; printf("\n Enter the string:"); gets(str1); //strtrmm(str1); printf("%s",strtrmm(str1));... (2 Replies)
Discussion started by: zinat
2 Replies

2. Programming

char array

cat int.c int main() { unsigned char wwn; wwn=50; wwn=00; wwn=53; wwn=30; wwn=08; wwn=09; wwn=82; wwn=17; printf("WWN: %02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x\n ", wwn, wwn, wwn, wwn, wwn,... (8 Replies)
Discussion started by: powyama
8 Replies

3. Programming

help with char pointer array in C

i have an array like #define NUM 8 .... new_socket_fd = accept(socket_fd, (struct sockaddr *) &cli_addr, &client_length); char *items = {"one", "two", "three", "four", "five", "six", "seven", "eight"}; char *item_name_length = {"3", "3", "5", "4", "4", "3", "5", "5"}; ... (1 Reply)
Discussion started by: omega666
1 Replies

4. Programming

Array of char

I'm doing some coding in C++ Want to have a long empty string like below const char ModMisfit :: DelStr = "\r \r"; However due to the long blank the line is very long. Is there any way to avoid this and keep the... (5 Replies)
Discussion started by: kristinu
5 Replies

5. Programming

Passing by value a char array

Hi I am passing or want to pass value of a char array, so that even thoug the called routine is changing the values the calling function should not see the values changed, meaning only copy should be passed Here is the program #include<iostream.h> #include<string.h> void f(char a); int... (5 Replies)
Discussion started by: rkraj
5 Replies

6. Programming

CHAR Array - stuffed with values - with more size than it holds

Hi All I am simulating a problem in the production where i faced a situation. Please find the following example program which i simulated. #include<stdio.h> #include<stdlib.h> #include<string.h> int main() { char str1; (3 Replies)
Discussion started by: dhanamurthy
3 Replies

7. Programming

char array

hi, I have variable like, char keyword = "TRANSPARENCY "; while passing this variable to some function, first character of variable becomes null, but rest of characters still exist. Why this happens or something wrong with declaration. Their is no error while compiling & running... (2 Replies)
Discussion started by: avadhani
2 Replies

8. Programming

char array problem

hello i have a program in C (Unix - SOlaris5.7), and i have the next question: i have a lot of char variable, and i want store their values in a char array. The problem is what i donīt know how to put the char variable's value into the array, and i don`t know how to define the array please... (4 Replies)
Discussion started by: DebianJ
4 Replies

9. Programming

size of a char devices

hi i want to write a simple io-benchmark for raw devices, especially for harddisks, vx-volumes and md-volumes on solaris. is there a unix system call to get the size of the device? the 'stat' system call reports the size for regaular files but not for block or devices. On Solaris the... (2 Replies)
Discussion started by: guenter
2 Replies
Login or Register to Ask a Question