in Programming in C
416 views
0 votes
0 votes

This code executes successfully

int main() {

char str[20];

gets(str);

puts(str);

return 0;

}

whereas the below code gives runtime error

int main() {

char *str;

gets(str);

puts(str);

return 0;

}

why so?

in Programming in C
416 views

4 Comments

@pankaj_vir even scanf needs a size? so does that mean we can never get a string from input console if its declared as char* ?
0
0
@Kiran Karwa, we need the size of string for the input.if its declared as char* then we need to use dynamic memory.
1
1
@Kiran Karwa,

#include<stdio.h>
#include<stdlib.h>
int main() {
  char str[20];
char *ptr;
int n;
//case 1
printf("Input a string");
gets(str);
puts(str);

//case 2
printf("Enter the size of the string");
scanf("%d",&n);
ptr=(char *)malloc(n*sizeof(char));
ptr="Hope is the bird with Feathers";
printf("%s",ptr);
free(ptr);
return 0;
}

Please kindly execute this code snippet. I hope you'll understand the difference between character array and pointer.
1
1

Please log in or register to answer this question.