• Courses
  • Tutorials
  • Jobs
  • Practice
  • Contests

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. 

C
#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"?

  • char *str1 = "Geeks "; can be changed to char str1[100] = "Geeks ";

  • 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

  • A line a[m+n-1] = \'\\0\' is added at the end of myStrcat

  • A line \'a = (char *)malloc(sizeof(char)*(strlen(a) + strlen(b) + 1)) is added at the beginning of myStrcat()

Question 2

What is the output of following program? C
# include <stdio.h>

int main()
{
   char str1[] = \"GeeksQuiz\";
   char str2[] = {\'G\', \'e\', \'e\', \'k\', \'s\', \'Q\', \'u\', \'i\', \'z\'};
   int n1 = sizeof(str1)/sizeof(str1[0]);
   int n2 = sizeof(str2)/sizeof(str2[0]);
   printf(\"n1 = %d, n2 = %d\", n1, n2);
   return 0;
}
  • n1 = 10, n2 = 9
  • n1 = 10, n2 = 10
  • n1 = 9, n2 = 9
  • n1 = 9, n2 = 10

Question 3

What is the output of following program? C
#include<stdio.h>
void swap(char *str1, char *str2)
{
  char *temp = str1;
  str1 = str2;
  str2 = temp;
}  
  
int main()
{
  char *str1 = \"Geeks\";
  char *str2 = \"Quiz\";
  swap(str1, str2);
  printf(\"str1 is %s, str2 is %s\", str1, str2);
  return 0;
}
  • str1 is Quiz, str2 is Geeks
  • str1 is Geeks, str2 is Quiz
  • str1 is Geeks, str2 is Geeks
  • str1 is Quiz, str2 is Quiz

Question 4

Predict the output? C
#include <stdio.h>
int fun(char *str1)
{
  char *str2 = str1;
  while(*++str1);
  return (str1-str2);
}

int main()
{
  char *str = \"GeeksQuiz\";
  printf(\"%d\", fun(str));
  return 0;
}
  • 10
  • 9
  • 8
  • Random Number

Question 5

What does the following fragment of C-program print? C
 char c[] = \"GATE2011\"; 
 char *p =c; 
 printf(\"%s\", p + p[3] - p[1]) ;
  • GATE2011
  • E2011
  • 2011
  • 011

Question 6

C
#include<stdio.h>
int main()
{
    char str[] = \"GeeksQuiz\";
    printf(\"%s %s %s \", &str[5], &5[str], str+5);
    printf(\"%c %c %c \", *(str+6), str[6], 6[str]);
    return 0;
}
  • Runtime Error

  • Compiler Error

  • uiz uiz uiz u u u

  • Quiz Quiz Quiz u u u

Question 7

Output? C
int main()
{
    char a[2][3][3] = {\'g\',\'e\',\'e\',\'k\',\'s\',\'q\',\'u\',\'i\',\'z\'};
    printf(\"%s \", **a);
    return 0;
}
  • Compiler Error
  • geeksquiz followed by garbage characters
  • geeksquiz
  • Runtime Error

Question 8

Consider the following C program segment: C
 char p[20]; 
 char *s = \"string\"; 
 int length = strlen(s); 
 int i; 
 for (i = 0; i < length; i++) 
     p[i] = s[length  i]; 
 printf(\"%s\", p);
The output of the program is? (GATE CS 2004)
  • gnirts
  • gnirt
  • string
  • no output is printed

Question 9

The Output of the following C code will be?

C
#include <stdio.h>
 
void my_toUpper(char* str, int index)
{
    *(str + index) &= ~32;
}
 
int main()
{
    char* arr = \"geeksquiz\";
    my_toUpper(arr, 0);
    my_toUpper(arr, 5);
    printf(\"%s\", arr);
    return 0;
}
  • GeeksQuiz

  • geeksquiz

  • Compiler dependent

  • Runtime Error

Question 10

Predict the output of the following program: C
#include <stdio.h>
int main()
{
    char str[] = \"%d %c\", arr[] = \"GeeksQuiz\";
    printf(str, 0[arr], 2[arr + 3]);
    return 0;
}
  • G Q
  • 71 81
  • 71 Q
  • Compile-time error

There are 21 questions to complete.

Last Updated :
Take a part in the ongoing discussion