C | String | Question 1
Consider the following code. The function myStrcat concatenates two strings. It appends all characters of b to end of a. So the expected output is “Geeks Quiz”. The program compiles fine but produces segmentation fault when run.
#include <stdio.h> void myStrcat( char *a, char *b) { int m = strlen (a); int n = strlen (b); int i; for (i = 0; i <= n; i++) a[m+i] = b[i]; } int main() { char *str1 = "Geeks " ; char *str2 = "Quiz" ; myStrcat(str1, str2); printf ( "%s " , str1); return 0; } |
Which of the following changes can correct the program so that it prints “Geeks Quiz”?
(A) char *str1 = “Geeks “; can be changed to char str1[100] = “Geeks “;
(B) char *str1 = “Geeks “; can be changed to char str1[100] = “Geeks “; and a line a[m+n-1] = ‘\0’ is added at the end of myStrcat
(C) A line a[m+n-1] = ‘\0’ is added at the end of myStrcat
(D) A line ‘a = (char *)malloc(sizeof(char)*(strlen(a) + strlen(b) + 1)) is added at the beginning of myStrcat()
Answer: (A)
Explanation: See following for explanation.
https://www.geeksforgeeks.org/storage-for-strings-in-c/
Recommended Posts:
- C | String | Question 3
- C | String | Question 8
- C | String | Question 2
- C | String | Question 7
- C | String | Question 6
- C | String | Question 15
- C | String | Question 4
- C | String | Question 5
- C | String | Question 16
- C | String | Question 9
- C | String | Question 12
- C | String | Question 11
- C | String | Question 13
- C | String | Question 10
- C | String | Question 14