首页 > 编程知识 正文

scanf与gets的区别,nstepscan算法

时间:2023-05-04 11:45:29 阅读:110608 作者:1090

时间限制:1.0s 内存限制:512.0MB

求出五个字符串中最长的字符串。 每个字符串的长度不能超过100个,并且都是小写的。

样例输入

one two three four five

样例输出

three

我写的代码(错误,运行错误,问题未知)!!!!:

# include stdio.h # include string.hint main () {char str[5][100]; int i,max; int j=0; for(I=0; i 5; I ) scanf_s('%c ',str[i]; if(I==0) ) max=strlen ) str[I]; }最大strlen (str[I] )最大=strlen ) str [ I ]; j=i; }puts(str[j]; 返回0; } 别人的答案:

第一种:

# include stdio.h # include string.hint main () { char str[5][100]; int max=0; int a[5]; //记录字符串长度的数组int i; for(I=0; i 5; I ) Scanf('%s ',str[i]; a[I]=strlen(str[I]; (for ) I=0; i 5; I () if ) a[I]a[max] ) { max=i; }printf('%s ',str[max] ); 返回0; } 第二种:

# include stdio.h # include string.hint main () { char str[5][100]; int len[5]; int i,j,t,max; max=0; for(I=0; i5; I ) Scanf('%s ',str[i]; len[I]=strlen(str[I]; if(Len[I]max ) { max=len[i]; t=i; }puts(str[t]; 返回0; } 然后我运行了他们的代码发现报错,还是报一样的错:

0x7a81e63c(ucrtbased.dll )中的(位于Project1.exe中的)异常:0xC0000005:写入位置0x00700000是不是他们错了。 结果当然是,我错了,但他们是对的。 问题是,在我使用的编译软件的vs环境中,调用scanf_s函数时必须声明字符的长度。 这意味着必须将相应的语句更改为scanf("%s", str[i],10);scanf("%s",str[i],10);,才能在vs2019上正常工作。

好家伙,错到怀疑人生。

总结:

puts();这个函数也很简单,只有一个参数。 可以是字符指针变量名称、字符数组名称或直接字符串常量。 功能是将字符串输出到画面上。 仅在输出时遇到“ 0”,即字符串结束标记时停止。 在vs环境中,调用scanf_s函数时必须声明字符的长度。 使用新数组存储二维数组中每行的长度,使比较更容易,输出更容易。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。