answersLogoWhite

0


Best Answer

With function strdup (here is an implementation, if you don't have one already)

char *strdup (const char *f)

{

size_t len;

char *to;

len= strlen (f);

to = malloc (len+1);

if (to) memcpy (to, f, len+1);

return to;

}

User Avatar

Wiki User

13y ago
This answer is:
User Avatar

Add your answer:

Earn +20 pts
Q: How do you allocate memory dynamically for a string of unknown size in c?
Write your answer...
Submit
Still have questions?
magnify glass
imp
Continue Learning about Engineering

What is difference between String str and String s equals new String?

The first statement, "String str", simply declares a variable named str of type String. It does not allocate memory or assign any value to the variable. The second statement, "String s = new String", declares a variable named s of type String and allocates memory for it. It also creates a new instance of the String class and assigns it to the variable s.


What is the strcpy function?

The strcpy function is declared in the <string.h> header of the C standard library. The function is used to copy a null-terminated string (a null-terminated array of type char). The function accepts two arguments: a pointer to the memory allocation where the copy will be placed; and a pointer to the first character of the null-terminated string to be copied. The memory allocation where the copy will be made must be large enough to accommodate the string, including the null-terminator. Example usage: void f (char* s) { int len; char* c; len = strlen (s) + 1; /* determine length of string (including null-terminator) */ c = malloc (len); /* allocate memory for copy */ strcpy (c, s); /* ... */ free (c); /* release allocation */ }


How do you write a function that counts the number of characters in a string?

As this is probably a homework question, I will give you some pseudo code: [code] num_chars = 0 READ ch FROM string WHILE ch IS NOT END OF STRING num_chars = num_chars + 1 READ ch FROM string END WHILE [/code] Remember that in C, we use what are called "C-strings". C-strings are a pointer to a continuous group of characters in memory which are terminated by a null character. The null character is '\0', and has an integer value of 0. The C-string generally points to the first character in the string. To access the value of this character, you must use the dereferencing operator, *. If you want to move to the next character, you simply add 1 to the pointer. So if you have a C-string: char *str = "abcd"; then: *str '\0' Anything past the null character is undefined. Trying to access this data is considered to be a buffer overflow, and is very dangerous. Note that c-strings created as pointers should always be treated as immutable, as trying to change them might produce errors. Many compilers will allocate the above string inside the static data area, along with any constants or literals which can not fit inside the immediate field of an instruction. If you want a mutable string, then declare it as a character array: char str[] = "abcd"; This method of declaration will explicitly allocate memory on the stack to store the c string in, and as such, the string can be safely manipulated without fear of unintended side effects.


Difference between char pointer and char buffer?

The difference here is that char *p = "Hello"; will place Hello world in the read-only parts of the memory and making p a pointer to that, making any writing operation on this memory illegal. While doing: char p[] = "Hello"; puts the literal string in read-only memory and copies the string to newly allocated memory on the stack. p[0] = 'A'; is legal.


What happens when your compare two string objects with the equals operator?

Yes, the if the two string objects point to the same memory location. But "==" is not the best way to compare two string objects. Two strings can be compared using obj1.equals(obj2). This compares for the textual equal-ness of the two string objects.

Related questions

How can use Strdup function in c language?

char* duplicated strdup("Hello World"); duplicated will now contain the address to dynamically allocated memory of a C-style string that contains "Hello World" and a null at the end. Be sure to free duplicated when you're done with it or you'll have a memory leak.


What is difference between String str and String s equals new String?

The first statement, "String str", simply declares a variable named str of type String. It does not allocate memory or assign any value to the variable. The second statement, "String s = new String", declares a variable named s of type String and allocates memory for it. It also creates a new instance of the String class and assigns it to the variable s.


Piglatin string in c without using pointer?

Sure, you can write a function in C to convert a string to Pig Latin without using pointers by passing the string as a parameter and manipulating it directly within the function. You can split the string into words, check if a word starts with a vowel or consonant, and then apply the appropriate transformation following the rules of Pig Latin. Remember to allocate enough memory for the modified string to prevent buffer overflow.


When does the memory created for an object?

Memory for a Java object gets created when the object is instantiated. For example private String name = "rocky"; At the end of this statement the memory for the string object name gets created in the memory.


What are array of string pointers?

An array of pointers to string would contain, per array position, a number dictating which memory address holds the string data. For example, position [0] in an array would contain a memory address. This memory address can be de-referenced to obtain the actual information held within that memory address.


What is the strcpy function?

The strcpy function is declared in the <string.h> header of the C standard library. The function is used to copy a null-terminated string (a null-terminated array of type char). The function accepts two arguments: a pointer to the memory allocation where the copy will be placed; and a pointer to the first character of the null-terminated string to be copied. The memory allocation where the copy will be made must be large enough to accommodate the string, including the null-terminator. Example usage: void f (char* s) { int len; char* c; len = strlen (s) + 1; /* determine length of string (including null-terminator) */ c = malloc (len); /* allocate memory for copy */ strcpy (c, s); /* ... */ free (c); /* release allocation */ }


Why memory to memory acess is not possible in 8086 micro processor?

Memory to memory access is certainly possible in the 8086/8088 microprocessor. Look at the repeated string copy instructions.


How do you use a pointer?

A pointer is a reference to a location in memory that is a primitive type in C and other low-level languages. An example use would be if you wanted to store data at run-time, you would have to allocate memory using the malloc function, an you would access that memory area using a pointer Example (modified from http://www.cplusplus.com/reference/clibrary/cstdlib/malloc): #include <stdio.h> #include <stdlib.h> int main () { int i,n; char * buffer; // Declare a pointer to a char printf ("How long do you want the string? "); scanf ("%d", &i); // Get input from user and store in i // Allocate space for i+1 characters buffer = (char*) malloc ( sizeof( char[i+1] ) ); // buffer should now contains a pointer to this location if (buffer==NULL) exit (1); // Memory allocation failed, abort for (n=0; n<i; n++) buffer[n]=rand()%26+'a'; buffer[i]='\0'; printf ("Random string: %s\n",buffer); free (buffer); // Release allocated memory return 0; }


What are some unknown crazy string instrument names?

the Pikasso guitar it has 42 strings


What is immutable means in java?

immutable means we can't change the content of string object Example:String name = "Tommy"; String fullName = name + "Junior";Here when we declared fullName you would expect it to be appended to the system memory location where the variable name is saved. But in Java it does not happen this way.Here a new variable fullName would be created in memory and the value would be saved there.This is termed as immutable. i.e., String objects cannot be modified in memory once they are created. You may be able to view the change in your program but new String objects would be created in the system memory.Tip:If you want to modify your String objects, then it is advisable to use a StringBuffer instead of a String. StringBuffer allows us to modify string objects and they would be saved in only one place in the system memory. Hence the memory utilization of the system would be much better than the normal String.


How do you write C plus plus string concat without builtin functions?

#include<iostream> #include<string> int main() { // the two strings to concatenate std::string str1 = "Hello "; std::string str2 = "world!"; // allocate memory to the concatenated string with null-terminator char* str3 = new char[str1.size() + str2.size() + 1]; // initialise a moving pointer char* p = str3; // copy from the first string memcpy( p, str1.c_str(), str1.size() ); // advance the pointer p += str1.size(); // copy from the second string memcpy( p, str2.c_str(), str2.size() ); // advance the pointer p += str2.size(); // set the null-terminator *p = 0; // print concatenated string std::cout << str3 << std::endl; // tidy up delete [] str3, str3 = NULL; }


How much memory is required to store a 'character' and how much is required to store a 'string'?

a character/byte as defined in the C programming language is one byte (8 bits). A string can be as short as one byte and can be as long as the physical memory limits can contain it.