Best Answer

strcpy - copy a string to a location YOU created (you create the location, make sure that the source string will have enough room there and afterwards use strcpy to copy)

strdup - copy a string to a location that will be created by the function. The function will allocate space, make sure that your string will fit there and copy the string. Will return a pointer to the created area.

User Avatar

Wiki User

โˆ™ 2017-10-06 19:18:50
This answer is:
User Avatar

Add your answer:

Earn +20 pts
Q: What are the differences between strdup and strcpy functions used in C?
Write your answer...
Related questions

What is string library functions syntax?

String library function is one which is used to perform an operation in C-programming,without which library functions likestrlen(),strcp(),strcmp(),strdup(),strrev(),etc..,.can be performed

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.

How do you allocate memory dynamically for a string of unknown size in c?

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;}

Program to implement strdup in C?

char *strdup (const char *s) { size_t len; char *p; if ( !s ) return NULL; len = strlen (s); p = malloc (len+1); if (p && len) { memcpy (p, s, len); p[len] = '\0'; } return p; }

How could he easily return PATH to its original value?

Save the old value, before you change it! char *old_path = strdup (getenv ("PATH")); putenv ("PATH=/new/path"); ... sprintf (tmp, "PATH=%s", old_path); putenv (tmp); free (old_path);

How do you program reverse letters using arrays in C plus plus?

char * RevString( char * str ){char * dup = strdup( str );size_t len = strlen( str );int x = 0;int y = len;while( x

Can you give me c programs?

• Write Your Own Programs o Write your own C program to implement the atoi() function o Implement the memmove() function. What is the difference between the memmove() and memcpy() function? o Write C code to implement the strstr() (search for a substring) function. o Write your own printf() function in C o Implement the strcpy() function. o Implement the strcmp(str1, str2) function. o Implement the substr() function in C. o Write your own copy() function o Write C programs to implement the toupper() and the isupper() functions o Write a C program to implement your own strdup() function. o Write a C program to implement the strlen() function o Write your own strcat() function • C o Write a C program to swap two variables without using a temporary variable o What is the 8 queens problem? Write a C program to solve it. o Write a C program to print a square matrix helically. o Write a C program to reverse a string o Write a C program to reverse the words in a sentence in place. o Write a C program generate permutations. o Write a C program for calculating the factorial of a number o Write a C program to calculate pow(x,n)? o Write a C program which does wildcard pattern matching algorithm o How do you calculate the maximum subarray of a list of numbers? o How to generate Fibonacci numbers? How to find out if a given number is a Fibonacci number or not? Write C programs to do both. o Solve the Rat In A Maze problem using backtracking. o What Little-Endian and Big-Endian? How can I determine whether a machine's byte order is big-endian or little endian? How can we convert from one to another? o Write C code to solve the Tower of Hanoi problem. o Write C code to return a string from a function o Write a C program which produces its own source code as its output o Write a C progam to convert from decimal to any base (binary, hex, oct etc...) o Write C code to check if an integer is a power of 2 or not in a single line? o Write a C program to find the GCD of two numbers. o Finding a duplicated integer problem o Write code to remove duplicates in a sorted array. o Find the maximum of three integers using the ternary operator. o How do you initialize a pointer inside a function? o Write C code to dynamically allocate one, two and three dimensional arrays (using malloc()) o How would you find the size of structure without using sizeof()? o Write a C program to multiply two matrices. o Write a C program to check for palindromes. o Write a C program to convert a decimal number into a binary number. o Write C code to implement the Binary Search algorithm. o Wite code to evaluate a polynomial. o Write code to add two polynomials o Write a program to add two long positive numbers (each represented by linked lists). o How do you compare floating point numbers? o What's a good way to implement complex numbers in C? o How can I display a percentage-done indication on the screen? o Write a program to check if a given year is a leap year or not? o Is there something we can do in C but not in C++? o How to swap the two nibbles in a byte ? o How to scan a string till we hit a new line using scanf()? o Write pseudocode to compare versions (like 115.10.1 vs 115.11.5). o How do you get the line numbers in C? o How to fast multiply a number by 7? o Write a simple piece of code to split a string at equal intervals o Is there a way to multiply matrices in lesser than o(n^3) time complexity? o How do you find out if a machine is 32 bit or 64 bit? o Write a program to have the output go two places at once (to the screen and to a file also) o Write code to round numbers o How can we sum the digits of a given number in single statement? o Given two strings A and B, how would you find out if the characters in B were a subset of the characters in A? o Write a program to merge two arrays in sorted order, so that if an integer is in both the arrays, it gets added into the final array only once. * o Write a program to check if the stack grows up or down o How to add two numbers without using the plus operator? o How to generate prime numbers? How to generate the next prime after a given prime? o Write a program to print numbers from 1 to 100 without using loops! o Write your own trim() or squeeze() function to remove the spaces from a string. o Write your own random number generator function in C.* o Write your own sqrt() function in C* • Sorting Techniques Programs o What is heap sort? o What is the difference between Merge Sort and Quick sort? o Give pseudocode for the mergesort algorithm o Implement the bubble sort algorithm. How can it be improved? Write the code for selection sort, quick sort, insertion sort. o How can I sort things that are too large to bring into memory? • C Pointers Programs o What does *p++ do? Does it increment p or the value pointed by p? o What is a NULL pointer? How is it different from an unitialized pointer? How is a NULL pointer defined? o What is a null pointer assignment error? o Does an array always get converted to a pointer? What is the difference between arr and &arr? How does one declare a pointer to an entire array? o Is the cast to malloc() required at all? o What does malloc() , calloc(), realloc(), free() do? What are the common problems with malloc()? Is there a way to find out how much memory a pointer was allocated? o What's the difference between const char *p, char * const p and const char * const p? o What is a void pointer? Why can't we perform arithmetic on a void * pointer? o What do Segmentation fault, access violation, core dump and Bus error mean? o What is the difference between an array of pointers and a pointer to an array? o What is a memory leak? o What are brk() and sbrk() used for? How are they different from malloc()? o What is a dangling pointer? What are reference counters with respect to pointers? o What do pointers contain? o Is *(*(p+i)+j) is equivalent to p[i][j]? Is num[i] operator? o Can we pass constant values to functions which accept structure arguments? o How does one use fread() and fwrite()? Can we read/write structures to/from files? o Why do structures get padded? Why does sizeof() return a larger size? o Can we determine the offset of a field within a structure and directly access that element? o What are bit fields in structures? o What is a union? Where does one use unions? What are the limitations of unions? • C Macros Programs o How should we write a multi-statement macro? o How can I write a macro which takes a variable number of arguments? o What is the token pasting operator and stringizing operator in C? o Define a macro called SQR which squares a number. • C Headers Programs o What should go in header files? How to prevent a header file being included twice? Whats wrong with including more headers? o Is there a limit on the number of characters in the name of a header file? o Is it acceptable to declare/define a variable in a C header? • C File operations Programs o How do stat(), fstat(), vstat() work? How to check whether a file exists? o How can I insert or delete a line (or record) in the middle of a file? o How can I recover the file name using its file descriptor? o How can I delete a file? How do I copy files? How can I read a directory in a C program? o Whats the use of fopen(), fclose(), fprintf(), getc(), putc(), getw(), putw(), fscanf(), feof(), ftell(), fseek(), rewind(), fread(), fwrite(), fgets(), fputs(), freopen(), fflush(), ungetc()? o How to check if a file is a binary file or an ascii file? • C Declarations and Definitions Programs o What is the difference between char *a and char a[]? o How can I declare an array with only one element and still access elements beyond the first element (in a valid fashion)? o What is the difference between enumeration variables and the preprocessor #defines? • C Functions - built-in Programs o Whats the difference between gets() and fgets()? Whats the correct way to use fgets() when reading a file? o How can I have a variable field width with printf? o How can I specify a variable width in a scanf() format string? o How can I convert numbers to strings (the opposite of atoi)? o Why should one use strncpy() and not strcpy()? What are the problems with strncpy()? o How does the function strtok() work? o Why do we get the floating point formats not linked error? o Why do some people put void cast before each call to printf()? o What is assert() and when would I use it? o What do memcpy(), memchr(), memcmp(), memset(), strdup(), strncat(), strcmp(), strncmp(), strcpy(), strncpy(), strlen(), strchr(), strchr(), strpbrk(), strspn(), strcspn(), strtok() do? o What does alloca() do? o Can you compare two strings like string1==string2? Why do we need strcmp()? o What does printf() return? o What do setjmp() and longjump() functions do? • C Functions - The main function Programs o Whats the prototype of main()? Can main() return a structure? o Is exit(status) equivalent to returning the same status from main()? o Can main() be called recursively? o How to print the arguments received by main()?

How do you write a c program for to replace a character of string either fro mbeginning or ending or at specified location?

The standard C library includes two simple utilities to find the first or last occurance of a given character within a given string, strchr() to search from the start and strrchr() for the reverse start from the end. Subject to the chosen search direction, you could use one of these two simple API. Both return a pointer to the location of the matching character within the string, or NULL if no such character is found. Note that this approach assumes a mutable string, a string stored in writeable memory. A string literal is a constant string and not generally mutable (even though some compilers are very casual about this). That is, strchr("the quick brown fox", 'q') will return a pointer to the first 'q', but since the string is a string of constant characters, you shouldn't use the pointer to change the letter found. To search and modify, you'd use string of variable characters, such as one allocated with the malloc() or strdup() standard API, or one created as a char array.

Suggestions for mini project in data structures using c?

1. Define a structure? A. A structure is a set of variables positioned under one name, offering a suitable means of relevant information together. Declaration of structure creates a template which can be used to produce structure objects that are called as its instances. The variables which form the structure are called as members, also referred as fields or elements. 2. Define a pointer? A. A pointer is nothing but a reference to some memory location. As a computer has billions or may be even trillions of cells, every cell can be filled with some data. With the help of pointers, one can know and access the value of its memory cell and its location. 3. What are the advantages of a pointer? A. Dynamic Memory Allocation, Passing structures and array to functions, creating data structures like linked lists, trees and so on, and passing addresses to functions. 4. Define static variable? A. A special variable which is stored in the data segment not like the default auto variable that is stored in stack, is called static variable. It can be initialized through using keyword static before variable name. 5. How are structure passing and returning implemented? A. When you pass structures as arguments to functions, the whole structure is usually pushed on the stack, through as several words as are needed. To avoid this overhead, programmers usually opt to use pointers to structures instead. Some compilers simply pass a pointer to the structure, even though they have to produce a local copy to save pass-by-value semantics. Structures are usually returned from functions in a position pointed to by an additional, compiler-supplied hidden argument to the function. Few older compilers used to use unique, static locations for structure returns, though this made structure-valued functions non-reentrant that ANSI C disapproves. 6. Why can't we compare structures? A. We do not have one or fine way for a compiler to apply structure evaluation that is constant with lower level flavor of C. A plain byte-by-bye comparison could be found on random bits available in unused 'holes' in the structure; such filling is used to maintain the arrangement of following fields accurate. A field-by-field assessment may require improper amounts of recurring code for larger structures. 7. Why doesn't struct x { … };x thestruct; work? A. C is not similar to C++. Typedef names are not automatically produced for structure tags 8. Why doesn't this code: a[i] = i++; work? A. The subexpression i++ creates a side effect. It changes i's value which directs to undefined behavior as i as well is referenced somewhere else in the same expression 9. Can we initialize unions? A. ANSI C permits an initializer for the foremost member of a union. We do not have any standard method of initializing other members (there is no way even under a pre-ANSI compiler to initialize a unionl) 10. Can main () be called recursively? A. Yes, any function that has main() could be called recurrently. 11. Are the variables argc and argv are always local to main? A. Yes, argc and argv are local to main 12. What would be the similar pointer expression for referring the equivalent element as a[p][q][r][s]? A. *( * ( * ( * (a+p) + q ) + r ) + s) 13. Are the expressions *ptr ++ and ++ *ptr same? A. No. *ptr++ increments pointer, not the value pointed by it. Where as ++*ptr increments the value being pointed to by ptr. 14. What are the benefits of using array of pointers to string instead of an array of strings? A. (i) Effective usage of memory (ii) Simpler to swap the strings through moving their pointers when sorting 15. Discuss on pointer arithmetic? A. (i) Assigning pointers to the similar kind of pointers (ii) Subtracting or adding a pointer and an integer (iii) comparing and subtracting two pointers (iv) Decrementing or incrementing the pointer that are pointing to the elements of an array while a pointer to an integer is added by one, the address is added by two. The Compiler does this automatically. Assiging value 0 to the pointer variable and comparing it with the pointer. Pointer consisting 0 points to nothing at all 16. What is the invalid pointer arithmetic? A. (i) Adding, dividing and multiplying two pointers (ii) Adding double or float to pointer (iii) Masking or shifting pointer (iv) Assigning a pointer of one type to another type of pointer. 17. Is the allocated space within a function automatically deallocated when the function returns? A. None of the pointers are similar to that of what they actually point to. Local variables like local pointer variables in a function are automatically deallocated if function returns. However, coming to a local pointer variable, deallocation is nothing but the pointer being deallocated and not blocking of memory allocated to it. Memory that is allocated dynamically always continues till the program terminates or allocation is freed. 18. What are the pointer declarations used in C? A. (i) Pointers to an array (ii) Array of pointers (iii) Pointer to a data type (iv) Pointer to a pointer (v) Function returning a pointer 19. Can we use any name in place of argv and argc as command line arguments? A. Yes. We can certainly use any user defined name instead of argc and argv. 20. Difference between an array of pointers and a pointer to an array? A. Array of pointers (i) Declaration - data type *array_name[size] (ii) Size indicates size of the row (iii) The space for columns may be dynamically allocated Pointer of Arrays (i) Declaration - data_type (*array_name)[size] (ii) Size indicates size of the column 21. Difference between an array name and a pointer variable? A. A pointer variable is a variable while an array name is not a variable but is a fixed address. Unlike a pointer variable, array name cannot be initialized. An array name being a constant value, - and ++ operators can not be applied to it. 22. What is the purpose of rewind()? A. The rewind() function is used to get the file pointer to the starting of the file. Rewind (fp); Fp is a file pointer. And we can get similar effect through feek(fp,0,0); 23. What is the purpose of ftell? A. The ftell() function is used to get the current file referred by the file pointer. ftell(fp); returns a long integer value referring the current location of the file pointed by the file pointer fp. If any error occurs, it will return -1. 24. What is a random access file? A. A file can be accessed at random through function fseek(), fseek(fp,position,origin); file pointer number file pointer fp positions number of bytes offset origin from 0, 1 or 2 denoting the starting, current or end position of the file respectively. 25. How is fopen()used? A. The fopen() function return a file pointer. So a file pointer is declared and is assigned as FILE *fp; fp=fopen(filename,mode); 26. How is a file closed? A. A file is closed using fclose() function 27. What is a file pointer? A. The pointer to a FILE data type is known as a file pointer or a stream pointer. This pointer points to the block of information of the stream/file that had just been accessed. 28. What is a stream? A. A stream is nothing but source of destination of data or simply data that is associated with a hard disk or other input/output device. The source stream that offers data to a program is known as input stream and the source stream that receives the result from the program is known as output stream. 29. What is meant by file opening? A. The process of connecting a program to a file is known as file opening. It needs I/O stream creation in advance to writing or reading the data. 30. What exactly is a file? A. A file is an area of storage in auxiliary storage devices or in hard disks. It includes information in bytes. 31. What are the types of files? A. Files are of two types 1-high level files (stream oriented files) - These are accessed through library functions 2-low level files (system oriented files) - These are accessed through system calls 32. What is the difference between the functions memmove() and memcpy()? A. The arguments of memmove() can overlie in memory, while the arguments of memcpy() cannot 33. What do the functions atoi(), itoa() and gcvt() do? A. atoi() is a macro that converts integer to character. itoa() It converts an integer to string gcvt() It converts a floating point number to string 34. How would you use the functions randomize() and random()? A. Randomize() initiates random number generation with a random value. Random() generates random number between 0 and n-1 35. What are the two forms of #include directive? A. 1. #include"filename" 2. #include 36. What are the facilities provided by preprocessor? A. File inclusion, substitution facility and conditional compilation 37. What is a preprocessor? What are the advantages of preprocessor? A. Preprocessor practices the source code program before it is sent through the compiler. (i) It includes the readability of a program (ii) It helps in easier modification (iii) It facilitates writing convenient programs (iv) It helps in easier debugging (v) It helps in testing a portion of program (vi) It enables implementing comprehensive program 38. Define bit fields? Point out their uses in Structure declaration? A. A bit field is a group of adjoining bits in a one execution based on storage unit which we call as a "word". Usually, the field definition's syntax and access is based on a structure. Struct { unsigned int k :1; unsigned int l :1; unsigned int m :1; }flags; The number that is preceeding the colon indicates the field width. And flag is a variable that includes 3 bit fields. 39. What is the maximum combined length of command line arguments including the space between adjacent arguments? A. It depends on the operating system 40. Compose a program to swap two variables without the help of third variable. A. a^=b; b^=a; a^=b; In the above program, the numbers are converted into binary numbers and then xor operator is executed. 41. What is pre-increment and post-increment? A. ++num (pre-increment) increases value of num before it is used in the expression, where num++ (post-increment) increases the num after its value is used. 42. Difference between logical vs syntax errors? A. Logical error: It occurs by a wrong algorithm or a mistyped statement in such a way that it does not violate the syntax, and these are difficult to find. Syntax error: It involves syntax validation, and compiler prints diagnostic message. Ex: a=b 43. What are C identifiers? A. C identifiers are the names given to different programming elements like arrays, functions and variables. It is usually a combination of a letter, a digit and an underscore. It should start with a letter, and backspace is not allowed. 44. What are C tokens? A. There are 6 classes of C tokens - keywords, constants, identifier, operators, string literals and other separators. 45. What do the 'c' and 'v' in argc and argv stand for? A. The c in argument count, argc stands for the number of the command line argument that the program is invoked with. And v in argument vector, argv is a pointer to an array of the character string that contains the argument. 46. Difference between array and pointer? A. Array: (i) Arrays allocate space, automatically (ii) They can not be reassigned (iii) They can not be resized (iv) sizeof (arrayname) returns the number of bytes occupied by the array. Pointer: (i) Assigned explicitly to point an allocated space. (ii) It can be reassigned (iii) It can be resized using realloc() function (iv) sizeof (p) gives the number of bytes used to store the pointer variable p. 47. Compose a program using Command Line Arguments? A. #include void main(int argc,char *argv[]) { int i; clrscr(); for(i=0;i printf("\n%d",argv[i]); } 48. Write a program which employs Recursion? A. int fact(int n) { return n > 1 ? n * fact(n - 1) : 1; } 49. How can we read/write Structures from/to data files? A. To compose a structure fwrite() can be used as Fwrite(&e, sizeof(e),1,fp); Here, e is a structure variable. A consequent fread() invocation will be able to read the structure back from file. Calling function fwrite() will write out sizeof(e) byte from the address & e. Data files that are written as memory images with function fwrite(), but will not be portable, especially if they include floating point fields or pointers. It is because structures' memory layout is compiler and machine dependent. Hence, structures written as memory are not need to be read back by programs running on other machine, also this is an important factor if the data files that you are writing will ever be exchanged between machines. 50. Can a Structure contain a Pointer to itself? A. Yes such structures are called self-referential structures. Other Questions What is the similarity between a Structure, Union and enumeration? How are Structure passing and returning implemented by the complier? What is the difference between an enumeration and a set of pre-processor # defines? Is it possible to have more than one main() function in a C program? Difference between formal argument and actual argument? What are built in functions? What is an argument? What is a function? What modular programming? Why is it necessary to give the size of an array in an array declaration? Is it possible to have negative index in an array? Difference between linker and linkage? What is an array of pointers? What is pointer to a pointer? What is the purpose of realloc? What is dynamic memory allocation? What is static memory allocation? How pointer variables are initialized? Are the expressions arr and &arr same for an array of integers? What is generic pointer in C? What does the error 'Null Pointer Assignment' means and what causes this error? Are pointers integer? What is a NULL Pointer? Whether it is same as an uninitialized pointer? In C, why is the void pointer useful? When would you use it? What is near pointer? What is a normalized pointer, how do we normalize a pointer? What is a huge pointer? What is a far pointer? Where do we use it? What is the difference between Strings and Arrays? What the advantages of using Unions? What is storage class? What are the different storage classes in C? Differentiate between a for loop and a while loop? What are it uses? What is recursion? Difference between strdup and strcpy? Out of fgets() and gets() which function is safe to use and why? Can we specify variable field width in a scanf() What is the use of typedef? What are register variables? What are the advantages Describe about storage allocation and scope of

How are character pointers handled in C?

In C, pointers are addresses to specific locations in memory. They contain no additional information. It's up to the compiler, memory management system or programmer to keep track of how much space is being used by the program that allocates the memory.C allows programmers to assign a type to the variable containing the pointer address. In the case of this question, the pointer variable references memory in one-byte chunks, each byte pertaining to a 8-bit signed integer called a "character", or char.Also keep in mind that pointers are nothing more than glorified integers. In modern C programming, these integers are 32-bit values. Since integers can be added to and subtracted from, pointers can as well, and the following code is perfectly legitimate:#include #include void main(){char *mystr="Hello there!";printf("ccc%c",*mystr, *(mystr+4), *(mystr+3), *(mystr+2), *(mystr+8), *(mystr+9), *(mystr+strlen(mystr)-1));}By prefixing the pointer variable with an asterisk (*), the code is telling the compiler to access the value at the memory location specified by a variable by the type of the variable. *mystrrefers to the character located at the address of the literal string "Hello there!", which is an 'H'.The above code is also referencing memory location offsets from the address in mystr. mystr+4 refers to the memory location 4 bytes past mystr's address, which is the 'o' in "Hello".The last wonderfully messy parameter adds the length of the string data at mystr to the address of mystr and subtracts 1. Since strings in C are NUL-terminated (zero-terminated), adding the length of the string to the memory location of the string refers to the value 0 terminating the string. Subtracting 1 results in the last character of the string, which in this case is the exclamation mark.All pointer variables can also point to memory addresses returned by the malloc() function. For instance, here's a simple string duplication function like strdup():#include char *stringdup(char *str){char *returnstr;returnstr=malloc(strlen(str)+1);memcpy(returnstr, str, strlen(str)+1);return returnstr;}Once the pointer returned from stringdup() is no longer needed, simply use free() to release the memory. This helps to avoid memory leaks in your program.Note that, when or if you decide to begin exploring C++, you'll need to handle typecasting more intensively. C++ distinguishes between const char* and char*, for instance, and char* and void*. (malloc() returns a void*, so the stringdup() function above would produce a warning without typecasting the malloc() return value to char* when assigning it to returnstr.)That's really all there is to know about character pointers in C.