C语⾔中的多⾏输⼊问题
⽜客⽹和LeetCode的竞赛题中经常会遇到多⾏输⼊,以前不熟悉这种写程序的⽅式,初次接触时输⼊值会有很多问题。
多⾏输⼊有下⾯这些常⽤⽅法:
⼀、未明确具体输⼊⾏数
没有确定的输⼊⾏数时,⼀般要采⽤Ctrl+Z结束输⼊,系统会⾃动输⼊这些,我们要做的是设置好循环条件即可。
具体是每次输⼊都产⽣结果还是所有输⼊完以后再输出结果要看题⽬要求。
如:输⼊多个字符串,保存在⼆维数组中,可以采⽤以下两种⽅式:
1、~scanf⽅式
char str[10][10];//定义⼆维数组,保存多个字符串
int i =0;
while(~scanf("%s", str[i]))
{
i++;
}
这⾥每次敲下回车会结束⼀次输⼊,循环进⾏⼀轮。
scanf函数的返回值为正确输⼊的值的个数,如过没有正确输⼊,scanf返回值即为-1,对-1按位取反值为0,⽤于退出循环。Windows平台,⽤Ctrl+Z来表⽰输⼊结束,有些编译器需要连续按两次或者三次Ctrl+Z,且每次都在⾏⾸。
2、EOF
End of file,⽂件结束符
char str[10][10];//定义⼆维数组,保存多个字符串
int i =0;
while(scanf("%s", str[i])!=EOF)
{
i++;
}
3、根据输⼊元素的个数
char str[10][10];//定义⼆维数组,保存多个字符串
int i =0;
while(scanf("%s", str[i])==1)//表⽰输⼊⼀个元素时,循环进⾏
{
i++;
}
c语言二维数组表示方法这⾥的’1’代表的是要输⼊的元素的个数,如果输⼊元素个数不为1则循环结束。
⼆、已知具体输⼊⾏数
知道输⼊⾏数时,循环条件设为具体⾏数即可
char str1[10][10];//定义⼆维数组,保存多个字符串
int num =10;
int i =0;
while(num--)
{
scanf("%s",&str1[i]);
i++;
}
ps:
上⾯的输⼊都是针对字符串来说的,⽽对于整型或浮点型数据来说,除了"\n"即回车以外,空格隔开也会⾃动结束⼀个数据的输⼊。造成这种区别的根本原因就是字符类型中原本就会有空格符,不能作为输⼊结束的标志,⽽整型和浮点型可以。
⽆论使⽤空格还是换⾏符隔开,都不影响最终的结果。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论