使用带有箭头运算符的 gets 获取输入不起作用?错误是什么?
taking input using gets with arrow operator not working? What's the Error?
这里有什么错误?
我尝试使用箭头运算符获取输入。
#include <stdio.h>
typedef struct{
char name[100];
int salary;
}emp;
void inp(emp *e){
printf("enter name : ");
gets(e->name);
printf("enter salary : ");
scanf("%d", e->salary);
}
int main() {
emp *e1,*e2;
inp(e1);
inp(e2);
printf("%s , %d\n", e1->name,e1->salary);
printf("%s , %d\n", e2->name,e2->salary);
return 0;
}
我试过将 & 甚至给 inp 函数作为 emp,但它不起作用。
它只是问我第一个员工的名字。就是这样!
甚至不打印输入工资。
我应该做哪些改变?
emp *e1,*e2;
创建两个不指向任何内容的指针...它们只是未初始化的指针。他们没有指向任何有效的内存。因此,当您使用 ->
取消引用它们时,您的程序可能会崩溃。
您需要分配内存,例如malloc
喜欢
e1 = malloc(sizeof *e1);
你应该先为你的函数取一个更好的名字,inp在c中已经是一个函数名了,看这个:https://cboard.cprogramming.com/c-programming/21255-ansi-c-function-inp-outp-inp-inpw.html
您的 struc
创建有误。所以我像这样更改了您的代码以使其清楚。我也确实使用了 getchar()
函数,因此您可以多次调用 fget()
函数。我想它确实如您所愿。
#include <stdio.h>
struct Emp{
char name[100];
int salary;
};
void func(struct Emp *e){
printf("enter name : ");
fgets(e->name, sizeof(e->name), stdin);
printf("enter salary : ");
scanf("%d", &e->salary);
getchar();
}
int main() {
struct Emp e1,e2;
func(&e1);
func(&e2);
printf("\n%s , %d", e1.name,e1.salary);
printf("\n%s , %d", e2.name,e2.salary);
return 0;
}
这里有什么错误? 我尝试使用箭头运算符获取输入。
#include <stdio.h>
typedef struct{
char name[100];
int salary;
}emp;
void inp(emp *e){
printf("enter name : ");
gets(e->name);
printf("enter salary : ");
scanf("%d", e->salary);
}
int main() {
emp *e1,*e2;
inp(e1);
inp(e2);
printf("%s , %d\n", e1->name,e1->salary);
printf("%s , %d\n", e2->name,e2->salary);
return 0;
}
我试过将 & 甚至给 inp 函数作为 emp,但它不起作用。 它只是问我第一个员工的名字。就是这样! 甚至不打印输入工资。 我应该做哪些改变?
emp *e1,*e2;
创建两个不指向任何内容的指针...它们只是未初始化的指针。他们没有指向任何有效的内存。因此,当您使用 ->
取消引用它们时,您的程序可能会崩溃。
您需要分配内存,例如malloc
喜欢
e1 = malloc(sizeof *e1);
你应该先为你的函数取一个更好的名字,inp在c中已经是一个函数名了,看这个:https://cboard.cprogramming.com/c-programming/21255-ansi-c-function-inp-outp-inp-inpw.html
您的 struc
创建有误。所以我像这样更改了您的代码以使其清楚。我也确实使用了 getchar()
函数,因此您可以多次调用 fget()
函数。我想它确实如您所愿。
#include <stdio.h>
struct Emp{
char name[100];
int salary;
};
void func(struct Emp *e){
printf("enter name : ");
fgets(e->name, sizeof(e->name), stdin);
printf("enter salary : ");
scanf("%d", &e->salary);
getchar();
}
int main() {
struct Emp e1,e2;
func(&e1);
func(&e2);
printf("\n%s , %d", e1.name,e1.salary);
printf("\n%s , %d", e2.name,e2.salary);
return 0;
}