gpt4 book ai didi

c - 函数跳过一个字符串

转载 作者:行者123 更新时间:2023-11-30 17:31:46 25 4
gpt4 key购买 nike

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

int main()
{
int N;
int i;

scanf("%d",&N);
char A[100][100];

for(i=0;i<N;i++)
gets(A[i]);

for(i=0;i<N;i++)
printf("%s\n",A[i]);
}

这是一个简单的程序,用于输入字符串数,然后打印它们。当我使用 gets 时,它会少读取一个字符串

最佳答案

在 scanf 调用之后需要清理缓冲区,因为其中存储了 \n (因为需要按 Enter 键才能输入数字)。你可以这样做:

char clean; 
while (clean=getchar()!='\n' && clean !=EOF);

这将继续读取标准输入缓冲区,直到它被清除为止。

还要避免使用 gets,它可能会导致缓冲区溢出,请改用 fgets 并将流设置为 stdin。

代码将是:

int N;
int i;
int clean;
scanf("%d", &N);
while (clean=getchar()!='\n' && clean !=EOF);
char A[100][100];
for (i = 0; i < N; i++)
fgets(A[i],100,stdin);
for (i = 0; i < N; i++)
printf("%s\n", A[i]);

关于c - 函数跳过一个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24466947/

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