Tag: 得到

Gets()不起作用

我试图使用gets()从用户获取一个字符串,但程序似乎正在通过gets() 。 用户没有暂停输入。 为什么gets()没有做任何事情? char name[13]; printf(“Profile name: “); gets(name); printf(“\n%s”, name);

在C中使用“gets”表示String输入

我一直试图从用户使用fgets获取字符串输入,但fgets不等待输入,所以在投资时我了解到似乎工作正常的getsfunction。 我的问题是:1。如果我输入超过10个字符,如果我声明只有十个元素的数组,为什么gets工作。 这是我的代码 #include int main(void){ char name[10]; printf(“Please enter your name: “); gets(name); printf(“\n”); printf(“%s”, name); return 0; } 我在测试时的输入:morethantenletters 将输出:’morethantenletters’ 当然,这应该会导致一些错误,不是吗? 由于name只有十个元素长。 2.我的下一个问题是,当我使用gets(&name)而不是gets(name)时,我的代码也可以工作 – 我不明白为什么。 &name发送&name的地址。 虽然name只是发送它的价值,不是吗?

gets()的问题

我正在尝试获取输入数据并使用结构打印它。 当我运行此代码时,它没有输入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:%s\n”,a.lastname); printf(“firstname: %s\n”, a.firstname); printf(“address:%s\n”, a.address); printf(“phone number:%s\n”, a.phonenumber); } 当我运行它时,它不等待输入姓氏。 它直接进入名字。

读取数字和换行符时出现奇怪的scanf行为

我只是在用C做了8年后才意识到scanf的’bug’。 scanf代码下方将跳过第二行输入中的前导空白字符。 int x; char in[100]; scanf(“%d\n”,&x); gets(in); 输入: 1 s x将包含1 ,但是只是”s”而不是” s” 这个标准C还是gcc行为?

为什么我可以在gcc -std = c11中使用gets()?

gets()函数已从C语言中删除。 标准中不存在此类function。 然而,我编译以下代码: #include int main (void) { (void) gets (NULL); } 运用 gcc -std=c11 -pedantic-errors -Wall -Wextra 它编译时不会出现任何错误或警告。 同样的, #include int gets; int main (void) {} 不会编译(错误:’获得’重新声明为不同类型的符号)。 在标准4.一致性§6中,我们可以阅读: 符合条件的实现可能具有扩展(包括附加库函数),前提是它们不会改变任何严格符合程序的行为 鉴于上述情况,我认为即使在迂腐模式下,gcc也不符合标准。 是否有一个原因? 这是故意还是错误? GCC版本4.9.1。 编辑: gcc –version gcc (x86_64-win32-seh-rev1, Built by MinGW-W64 project) 4.9.1

是否可以在不知道c中数组长度的情况下使用gets?

如果我们想要使用get in c,我们将执行以下操作: int main(void) { char str[100]; while (gets(str)) { printf(“%s\n”,str); } } 我们必须首先知道str的长度(即100),然后使用gets。 是否可以在不知道c中数组长度的情况下使用gets?

为什么以及gcc如何为gets()发出警告?

while(1) { printf(“\nEnter message : “); gets(message); //Send some data if( send(sock , message , strlen(message) , 0) < 0) { puts("Send failed"); return 1; } //Receive a reply from the server if( recv(sock , server_reply , 2000 , 0) < 0) { puts("recv failed"); break; } puts("Server reply :"); puts(server_reply); } close(sock); return 0; […]

scanf(“% s”,a)vs得到(a)

我被告知当用户输入字符串时不应使用scanf。 相反,大多数专家和StackOverflow上的用户都可以使用gets()。 我从来没有在StackOverflow上问过为什么不应该使用scanf over gets for strings。 这不是实际问题,但非常感谢回答这个问题。 现在来到实际的问题。 我遇到过这种类型的代码 – scanf(“%[^\n]s”,a); 这将读取一个字符串,直到用户输入一个新的行字符,同时将空格也视为字符串。 如果我使用有任何问题 scanf(“%[^\n]s”,a); 而不是得到? 得到比scanf函数更优化,听起来,gets纯粹专门处理字符串。 请让我知道这件事。 更新 这个链接帮助我更好地理解它。

C:gets()跳过第一个输入

#include #include #include #include typedef struct record { char name[20]; char surname[20]; char telephone[20]; }Record; typedef struct node { Record data; struct node *next; }Node; Node *head = NULL; void addRecord(Record s) { Node *newNode; Node *n; newNode = (Node*)malloc(sizeof(Node)); newNode->data = s; newNode->next = NULL; if (head == NULL) { // The linked list […]

fgets和gets之间的区别

fgets()和gets()什么区别? 当用户点击“输入”时,我正试图打破我的循环。 它与gets()一起运行良好,但我不想使用gets() 。 我尝试使用fgets()和scanf()但是我没有与gets()相同的结果。 无论用户在文本中输入什么, fgets()打破循环! 这是我的代码: void enter(void) { int i, for(i=top; i Enter name (ENTER to quit): “); gets(cat[i].name); if(!*cat[i].name) break; printf(“.> Enter Last Name: “); scanf(“%s”,cat[i].lastname); printf(“.> Enter Phone Number: “); scanf(“%s”,cat[i].phonenum); printf(“.> Enter e-Mail: “); scanf(“%s”,cat[i].info.mail); printf(“.> Enter Address: “); scanf(“%s”,cat[i].info.address); printf(“\n”); } top = i; }