gpt4 book ai didi

c - 我的 gets() 在我的代码中不起作用如何解决这个问题

转载 作者:行者123 更新时间:2023-11-30 19:03:50 25 4
gpt4 key购买 nike

我的代码在命令 gets() 中存在错误,无法输入字符串名称。我怎样才能做到这一点?

#include <stdio.h>
#include <string.h>

struct letter {
char name[20];
char address[30];
char message[40];
};

int n,i;

main() {
printf("Please enter number of employee: ");
scanf("%d",&n);
struct letter first[n];
//1. Keep an information
for(i=0; i<n; i++) {
//gets() does not work what wrong with this
printf("Enter name[%d] : ",i);
gets(first[i].name);

printf("\nEnter address[%d] : ",i);
scanf("%s",first[i].address);
strcpy(first[i].message, "How r u?");
}

// Show an information
for(i=0; i<n; i++) {
printf("\nNAME[%d] is %s",i,first[i].name);
printf("\nAddress[%d] is %s",i,first[i].address);
printf("\nMessage : %s",first[i].message);
}
}

最佳答案

如果你检查 man of gets 函数,我们可以看到它已被弃用:

gets - get a string from standard input (DEPRECATED)

另一种方法是 POSIX 函数 getline(),它可能在您的系统上可用:

#include <stdio.h>
ssize_t getline(char **lineptr, size_t *n, FILE *stream);

使用 malloc() 分配或重新分配缓冲区,并将其大小更新为 *n。初始值应为 lineptr = NULL 且 n = 0。

另一种选择:fgets() --> Man fgets

你在 Stack 上有很多例子,谷歌一下如何做到这一点。祝你好运。

关于c - 我的 gets() 在我的代码中不起作用如何解决这个问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53388179/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com