Sponsored Content
Top Forums Programming C: inputting string of unknown length Post 303042617 by GRMartin on Wednesday 1st of January 2020 10:37:17 AM
Old 01-01-2020
I'd just like to add that a good way to use realloc is to assign to a temp variable rather then the variable you are copying from. That way if realloc fails you haven't lost the memory in your original variable. i.e.


Code:
char* tmp = realloc (str, len);
if (tmp == NULL) {
    free (str); // you can free str since you haven't changed the address in realloc
    return NULL; // or something to signal an allocation failure

} 

str = tmp; // the reallocation worked and now we assign tmp to str

-Greg.
 

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Selecting unknown string.

Work problem: Need to set up a job to periodically check that the number of entries in the mail queue. I'm able to do the following: mailq | grep "Mail Queue" Which returns: Mail Queue (7 requests) Unfortunately I'm not sure how I select between `(` and `requests`? ... (2 Replies)
Discussion started by: Cameron
2 Replies

2. UNIX for Dummies Questions & Answers

length of the string

Hi all, pls help me in finding the length of the given string, do we need to write a code seperately or is there any command?? pls help. (3 Replies)
Discussion started by: vasikaran
3 Replies

3. Shell Programming and Scripting

sed problem - replacement string should be same length as matching string.

Hi guys, I hope you can help me with my problem. I have a text file that contains lines like this: 78 ANGELO -809.05 79 ANGELO2 -5,000.06 I need to find all occurences of amounts that are negative and replace them with x's 78 ANGELO xxxxxxx 79... (4 Replies)
Discussion started by: amangeles
4 Replies

4. Shell Programming and Scripting

read string, check string length and cut

Hello All, Plz help me with: I have a csv file with data separated by ',' and optionally enclosed by "". I want to check each of these values to see if they exceed the specified string length, and if they do I want to cut just that value to the max length allowed and keep the csv format as it... (9 Replies)
Discussion started by: ozzy80
9 Replies

5. Shell Programming and Scripting

perl newbie: how to extract an unknown word from a string

hi, im quite new to perl regexp. i have a problem where i want to extract a word from a given string. but the word is unknown, only fact is that it appears as the second word in the string. Eg. input string(s) : char var1 = 'A'; int var2 = 10; char *ptr; and what i want to do is... (3 Replies)
Discussion started by: wolwy_pete
3 Replies

6. Shell Programming and Scripting

searching and storing unknown number of lines based on the string with a condition

Dear friends, Please help me to resolve the problem below, I have a file with following content: date of file creation : 12 feb 2007 ==================== = name : suresh = city :mumbai #this is a blank line = date : 1st Nov 2005 ==================== few lines of some text this... (7 Replies)
Discussion started by: swamymns
7 Replies

7. UNIX for Dummies Questions & Answers

Read a string with leading spaces and find the length of the string

HI In my script, i am reading the input from the user and want to find the length of the string. The input may contain leading spaces. Right now, when leading spaces are there, they are not counted. Kindly help me My script is like below. I am using the ksh. #!/usr/bin/ksh echo... (2 Replies)
Discussion started by: dayamatrix
2 Replies

8. UNIX for Dummies Questions & Answers

Extract substring of unknown length from string

I have a string: hgLogOutput=" +0000 files: forum/web/hook-test.txt /forum/web/hook-test-2.txt description: test" and I want to extract the file names from it, they will always appear between the files: and the description:. I have worked out that I can do this: "$hgLogOutput" | awk '{... (2 Replies)
Discussion started by: klogger
2 Replies

9. Shell Programming and Scripting

Delimted to padded conversion with unknown field length

I’m looking for an elegant way to convert a delimited file (comma delimited in this case) to padded columns (for printing in non-proportional font) but the length of each column is not known ahead of time. It needs to be calculated for each column from the longest entry in that column in a given... (3 Replies)
Discussion started by: Michael Stora
3 Replies

10. Shell Programming and Scripting

Removing characters from end of line (length unknown)

Hi I have a file which contains wrong XML, There are some garbage characters at the end of line that I want to get rid of. Example: <request type="product" ><attributes><pair><name>q</name><value><!]></value></pair><pair><name>start</name><value>1</value></pair></attributes></request>�J ... (7 Replies)
Discussion started by: dirtyd0ggy
7 Replies
MALLOC(3)						   BSD Library Functions Manual 						 MALLOC(3)

NAME
malloc, calloc, realloc, free -- general purpose memory allocation functions LIBRARY
Standard C Library (libc, -lc) SYNOPSIS
#include <stdlib.h> void * malloc(size_t size); void * calloc(size_t number, size_t size); void * realloc(void *ptr, size_t size); void free(void *ptr); DESCRIPTION
The malloc() function allocates size bytes of uninitialized memory. The allocated space is suitably aligned (after possible pointer coer- cion) for storage of any type of object. The calloc() function allocates space for number objects, each size bytes in length. The result is identical to calling malloc() with an argument of ``number * size'', with the exception that the allocated memory is explicitly initialized to zero bytes. The realloc() function changes the size of the previously allocated memory referenced by ptr to size bytes. The contents of the memory are unchanged up to the lesser of the new and old sizes. If the new size is larger, the value of the newly allocated portion of the memory is undefined. Upon success, the memory referenced by ptr is freed and a pointer to the newly allocated memory is returned. Note that realloc() may move the memory allocation, resulting in a different return value than ptr. If ptr is NULL, the realloc() function behaves identically to malloc() for the specified size. The free() function causes the allocated memory referenced by ptr to be made available for future allocations. If ptr is NULL, no action occurs. RETURN VALUES
The malloc() and calloc() functions return a pointer to the allocated memory if successful; otherwise a NULL pointer is returned and errno is set to ENOMEM. The realloc() function returns a pointer, possibly identical to ptr, to the allocated memory if successful; otherwise a NULL pointer is returned, and errno is set to ENOMEM if the error was the result of an allocation failure. The realloc() function always leaves the original buffer intact when an error occurs. The free() function returns no value. EXAMPLES
When using malloc(), be careful to avoid the following idiom: if ((p = malloc(number * size)) == NULL) err(EXIT_FAILURE, "malloc"); The multiplication may lead to an integer overflow. To avoid this, calloc() is recommended. If malloc() must be used, be sure to test for overflow: if (size && number > SIZE_MAX / size) { errno = EOVERFLOW; err(EXIT_FAILURE, "allocation"); } When using realloc(), one must be careful to avoid the following idiom: nsize += 50; if ((p = realloc(p, nsize)) == NULL) return NULL; Do not adjust the variable describing how much memory has been allocated until it is known that the allocation has been successful. This can cause aberrant program behavior if the incorrect size value is used. In most cases, the above example will also leak memory. As stated ear- lier, a return value of NULL indicates that the old object still remains allocated. Better code looks like this: newsize = size + 50; if ((p2 = realloc(p, newsize)) == NULL) { if (p != NULL) free(p); p = NULL; return NULL; } p = p2; size = newsize; SEE ALSO
madvise(2), mmap(2), sbrk(2), alloca(3), atexit(3), getpagesize(3), memory(3), posix_memalign(3) For the implementation details, see jemalloc(3). STANDARDS
The malloc(), calloc(), realloc() and free() functions conform to ISO/IEC 9899:1990 (``ISO C90''). BSD
May 3, 2010 BSD
All times are GMT -4. The time now is 11:44 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy