You have to make four changes:
Change
char * str[25];to
char str[25];as you want an array of 25
chars, not an array of 25 pointers tochar.Change
char car;to
int car;as
getchar()returns anint, not achar.Change
scanf("%[^\n]s", &str);to
scanf( "%24[^\n]", str);which tells
scanfto- Ignore all whitespace characters, if any.
- Scan a maximum of 24 characters (+1 for the Nul-terminator
'\0') or until a\nand store it instr.
Change
printf("\nThe sentence is %s, and the character is %s\n", str, car);to
printf("\nThe sentence is %s, and the character is %c\n", str, car);as the correct format specifier for a
charis%c, not%s.
You have to make four changes:
Change
char * str[25];to
char str[25];as you want an array of 25
chars, not an array of 25 pointers tochar.Change
char car;to
int car;as
getchar()returns anint, not achar.Change
scanf("%[^\n]s", &str);to
scanf( "%24[^\n]", str);which tells
scanfto- Ignore all whitespace characters, if any.
- Scan a maximum of 24 characters (+1 for the Nul-terminator
'\0') or until a\nand store it instr.
Change
printf("\nThe sentence is %s, and the character is %s\n", str, car);to
printf("\nThe sentence is %s, and the character is %c\n", str, car);as the correct format specifier for a
charis%c, not%s.
str is an array of 25 pointers to char, not an array of char. So change its declaration to
char str[25];
And you cannot use scanf to read sentences--it stops reading at the first whitespace, so use fgets to read the sentence instead.
And in your last printf, you need the %c specifier to print characters, not %s.
You also need to flush the standard input, because there is a '\n' remaining in stdin, so you need to throw those characters out.
The revised program is now
#include <stdio.h>
void flush();
int main()
{
char str[25], car;
printf("Enter a character\n");
car = getchar();
flush();
printf("Enter a sentence\n");
fgets(str, 25, stdin);
printf("\nThe sentence is %s, and the character is %c\n", str, car);
return 0;
}
void flush()
{
int c;
while ((c = getchar()) != '\n' && c != EOF)
;
}
Videos
You have to make four changes:
Change
char * str[25];to
char str[25];as you want an array of 25
chars, not an array of 25 pointers tochar.Change
char car;to
int car;as
getchar()returns anint, not achar.Change
scanf("%[^\n]s", &str);to
scanf( "%24[^\n]", str);which tells
scanfto- Ignore all whitespace characters, if any.
- Scan a maximum of 24 characters (+1 for the Nul-terminator
'\0') or until a\nand store it instr.
Change
printf("\nThe sentence is %s, and the character is %s\n", str, car);to
printf("\nThe sentence is %s, and the character is %c\n", str, car);as the correct format specifier for a
charis%c, not%s.
Hi,
So tutorialspoint, geeksforgeek, javatpoint, those websites that claim to have C/C++ tutorials are a bunch of shitty Indian garbage tutorials that are not suited for beginners at all. I'm trying to learn how to declare a string variable with C and read input with scanf() and I get a bunch of different information from all three sites and I'm really frustrated and confused. Do you do?
#include <stdio.h>
int main(void)
{
char name[100000000];
printf("What's your name?\n");
scanf("%c", char);
}Or is it
#inclue <stdio.h>
int main(void)
{
char** x;
printf("What's your name?\n");
scanf("%c", x)
}Or is it
#include <stdio.h>
int main(void)
{
string x;
printf("What's your name?\n");
scacnf("%s", x);
}Or is it
#include <stdio.h>
int main(void)
{
char **name;
printf("What's your name?\n");
scanf("%c", name)What the fuck is it? Is it %c or %s for the format code, and it is char name[] or char **var_name or **char var_name?? Someone please tell me. All these online tutorials are fucking GARBAGE and I can't find a clear answer anywehere
I've seen many forms to get a string input from the user, and wanted to know the difference between them, which is the best, or if it's just about preference.
In my computer science classes the teacher told us to read string using scanf(), like so:
scanf("\n%[^\n]", string);
But I've seen people using the fgets(), like so:
fgets(string, size, stdin);
I've also seen people talking about the gets() function, but in a negative light.
Is there a better option? or is it down to preference? what's the difference between them?