What is the Correct Way to Initialize a Character in C Programming?

Click For Summary
The discussion revolves around a programming issue where a C program fails to prompt for multiple inputs and closes immediately after the first input. The problem stems from using `scanf("%c", &ident.name);`, which reads only a single character into a char variable. This causes confusion when subsequent `scanf` calls are made, as they do not receive the expected input. The solution involves changing the `name` variable from a char to a string (char array) and using `scanf("%s", ident.name);` instead. This adjustment allows the program to correctly handle multiple inputs, and after implementing these changes, the program compiles and runs successfully without errors.
nard
Messages
16
Reaction score
0
the foolowing program is to read inputed data and display them all at once but when i run it it asks for the first information and then runs the total program without asking for the input of other information.after that it doesn't respond and closes immediatelly.
can someone help me and tells me what's wrong with my program?
thanks for your help.

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct database {
char name;
int phone_number,id_numb;
};
main()
{
struct database ident;
printf("enter a name\n");
scanf("%c",&ident.name);
printf("enter a phn numb\n");/* enter a phone number*/
scanf("%d",&ident.phone_number);
printf("enter the id_numb\n");/*enter an id number*/
scanf("%d",&ident.id_numb);
printf("the identity of %s is:\n",ident.name);/*displays the name*/
printf("phone:%d id:%d \n",ident.phone_number,ident.id_numb);/*displays the phone number and the id number*/
system("PAUSE");
}
 
Technology news on Phys.org
nard said:
scanf("%c",&ident.name);
the scanf("%c",...) is the issue. This reads a single character into the single character variable name. If you enter more than one character, scanf will attempt to handle those with the following scanf()'s.

Perhaps you'd want to use a string, which will solve the problem:

char name[128];

scanf("%s", ident.name);

printf( "... %s ...", ident.name);
 
I saw where i was making an error.
i corrected and while initialising the character i defined as an array and that way in the printf and scanf functions instead of using %c i used %s.after that the program is compiled and run without complications
 
Learn If you want to write code for Python Machine learning, AI Statistics/data analysis Scientific research Web application servers Some microcontrollers JavaScript/Node JS/TypeScript Web sites Web application servers C# Games (Unity) Consumer applications (Windows) Business applications C++ Games (Unreal Engine) Operating systems, device drivers Microcontrollers/embedded systems Consumer applications (Linux) Some more tips: Do not learn C++ (or any other dialect of C) as a...

Similar threads

Replies
7
Views
2K
Replies
14
Views
3K
  • · Replies 2 ·
Replies
2
Views
1K
Replies
47
Views
5K
  • · Replies 6 ·
Replies
6
Views
6K
  • · Replies 1 ·
Replies
1
Views
2K
Replies
4
Views
3K
  • · Replies 30 ·
2
Replies
30
Views
4K
  • · Replies 3 ·
Replies
3
Views
1K
Replies
2
Views
3K