我正在尝试获取输入数据并使用结构打印它。 当我运行此代码时,它没有输入lastname的输入。 它直接要求输入firstname的输入。 有人可以帮我弄这个吗。 谢谢。
address.c typedef struct { char lname[25]; char fname[20]; char address[20]; char phonenumber[20]; }addressbook; addressbook a; int main() { printf("enter details:n"); printf("enter lastname:n"); gets(a.lastname); printf("enter firstname:n"); gets(a.firstname); printf("enter address:n"); gets(a.address); printf("enter phone number:n"); gets(a.phonenumber); printf("lastname:%sn",a.lastname); printf("firstname: %sn", a.firstname); printf("address:%sn", a.address); printf("phone number:%sn", a.phonenumber); }
当我运行它时,它不等待输入姓氏。 它直接进入免费精选名字大全。
该代码甚至不会按原样编译 ,生成(在我的环境中):
pax@pax-desktop:~$ gcc -Wall -Wextra -o qq qq.c qq.c: In function 'main': qq.c:12:2: warning: implicit declaration of function 'printf' qq.c:12:2: warning: incompatible implicit declaration of built-in function 'printf' qq.c:14:4: warning: implicit declaration of function 'gets' qq.c:14:10: error: 'addressbook' has no member named 'lastname' qq.c:16:10: error: 'addressbook' has no member named 'firstname' qq.c:21:28: error: 'addressbook' has no member named 'lastname' qq.c:22:31: error: 'addressbook' has no member named 'firstname' qq.c:25:1: warning: control reaches end of non-void function
您应该始终(至少最初)使用高警告级别进行编译,并记下编译器告诉您的内容:
此外,您可能需要考虑以下事项:
完成大部分更改后,您最终会得到以下内容:
#include typedef struct { char lastname[25]; char firstname[20]; char address[20]; char phonenumber[20]; }addressbook; addressbook a; int main (void) { printf("enter details:n"); printf("enter lastname:n"); gets(a.lastname); printf("enter firstname:n"); gets(a.firstname); printf("enter address:n"); gets(a.address); printf("enter phone number:n"); gets(a.phonenumber); printf("lastname:%sn",a.lastname); printf("firstname: %sn", a.firstname); printf("address:%sn", a.address); printf("phone number:%sn", a.phonenumber); return 0; }
虽然它仍然有严重的缓冲区溢出漏洞,但它编译并运行正常。 如果你想解决这个问题,你可以参考我给出的链接。
以上就是c/c++开发分享gets()的问题相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/522407.html