gpt4 book ai didi

c - 为什么在c中使用scanf()读取限制时无法访问第一个字符串元素

转载 作者:行者123 更新时间:2023-12-02 09:12:15 25 4
gpt4 key购买 nike

int main(){
char str[10][50],temp[50];
int lim,i,j;
printf("Enter lim: ");
scanf("%d",&lim);
for(i=0;i<lim;++i){
printf("Enter string[%d]: ",i+1);
gets(str[i]);
}

这里的str[0](Enter string[1]:)无法读取。读取从 'Enter string[2]: '(str[1]) 开始。

但是,如果不是 lim,而是将整数传递给循环,如下所示,程序将正确执行。造成这种情况的原因可能是什么?

int main(){
char str[10][50],temp[50];
int lim,i,j;
for(i=0;i<5;++i){
printf("Enter string: ");
gets(str[i]);

}

最佳答案

您的数字 scanf() 在输入流中留下了换行符,这将提供第一个 gets()

请查看此处寻求帮助:
http://sekrit.de/webdocs/c/beginners-guide-away-from-scanf.html
How to read / parse input in C? The FAQ

此外,您不想再使用 gets()
Why is the gets function so dangerous that it should not be used?

关于c - 为什么在c中使用scanf()读取限制时无法访问第一个字符串元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50870632/

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