c语言gets报错

作者&投稿:励浅 (若有异议请与网页底部的电邮联系)

求C语言大神写个排除错误的循环,要求只能输入男女,否则报错重新输入
include <stdio.h>#include <string.h>void main(){ char sex[5]; \/\/一个汉字最少2个字节,所以定义成数组 do { puts("请输入性别: "); gets(sex); } while( strcmp(sex,"男") && strcmp(sex,"女") ); printf("ur inputed is : %s\\n", sex );} ...

...前面那个我在程序练习网站OJ交上去报错wrong answer,而我把a换...
include <string.h> int main(){ unsigned int i,b,m,x,j;int a,l,n;char s[20];scanf("%d",&n);getchar();while(n--){ gets(s);l=strlen(s);b=0;for(i=0,j=l-1;i<=l-1;i++,j--){ m=1;if(s[i]=='1') {a=1;}else if(s[i]=='-') {a=-1;}else ...

如果定义了字符串长度,gets 输入时超过了其定义长度会怎样
不会报错,刚刚我试了一下,这个问题没有什么意义不是吗?一般知道数组长度用数组,不知道长度用指针。针对你这个问题,字符串结束符自然是在最后一个字符的后面,也就是在g后面有个\\n。

小弟刚学C语言,碰到个问题。。编写一个程序:要求输入一个正整数,如果输...
这个容易,你可以将输入的数赋值给一个变量。比如:输入的是3.2,自己定义一个int型变量.具体如下:假设n=3.2\/\/假设n是你定义的用来储存键盘输入的数。int a;float b;a=n;\/\/此时a就等于n的整数部分,也就是3;b=n-a;\/\/b用来存储n的小数部分,b等于3.2-3;if(b==0)printf("输入的是...

C语言规定一个字符串只能输入汉字,输入其他报错
include<stdio.h>void main() { char str[256],*p; int b=0; gets(str); p=str; while( *p ) { if ( *p>0 ) { b=1; break; } p++; } if ( b ) printf("输入字符串中存在非汉字字符。\\n");}

C语言error C2059: syntax error : 'type'
强制转换是(type)var 所以 average=float(s)\/n;需要 average=(float)s\/n;另外 int不能用gets输入,这个是输入字符串的。 需要scanf av的类型要用float 都改过来是这样的 include<stdio.h>\/\/#include<conio.h>int sum(int *p,int n){ int i=0,s=0; for(;i<=n-1;i++,p++) s=s...

为什么不报错,运行时候却异常终止?
这个修正也很容易,加一个内存分配就好了 比如 include<bits\/stdc++.h>using namespace std;int main(){char *a[50];int n;for(n = 0; n < 50; n ++){ a[n] = (char *)malloc(100);\/\/内存分配。 if(gets(a[n]) == NULL){free(a[n]);break;}}for(int i=0;i<n;i+...

一个sqlserver存储过程,创建时没报错,执行时有错误
正确的语句如下:exec('select @num=count(*) from tb_mail where'+ @mantype+'=@name and type=@type‘)要注意的就是:如果将数据表中的字段名作为参数进行传参时,要放在引号外面的 给你举个例子:ALTER PROCEDURE [dbo].[Gets](tb varchar(10), --这个参数是为了传参数据库表中的...

如下代码运行时报错“CRT detected that the application wrote t...
错误原因:因为对内存的操作越界了,超出所分配的内存的边界。解决方案:增大分配的内存。e.g.ans = new int[size_a+size_b +1 ];或者加到自己适宜的大小,问题即可解决。总结:对内存的操作要细之又细,new完后要delete,操作时不要越界(包括向前越或向后越)。

...题目是:合并几个字符串,每个字符串都以\\n结尾,要求用gets...
a[length_a]='\\n';b[length_b]='\\n';c[length_c]='\\n';以上操作吧字符串结束符'\\0' 删去 应在其后加上 a[length_a+1]='\\0';b[length_b+1] = '\\0';c[length_c+1] = '\\0';这样可得正确结果

连琪19577547752问: C语言gets为什么不执行 -
武隆县易贝回答: gets函数是以换行符或者EOF为结束标志,如果用空格或者跳格,gets函数会继续等待用户输入.1、gets函数: 原型:char * gets(char * buffer); 功能:从stdin流中读取字符串,直至读到换行符或EOF时停止,并将读取的结果存放在buffer指...

连琪19577547752问: c语言问题,gets为何不可用 -
武隆县易贝回答: 把getchar改为getch 因为你输入getchar的时候还要敲回车~~字符串cha2就是回车 或者在gets前面加一句scanf("%*c")或者getchar() 用来消化回车

连琪19577547752问: C语言中调用gets()函数进行字符串输入时警告我gets is unsafe,是什么原因啊? -
武隆县易贝回答: gets不检查内存越界,本质上就是不安全的,可以改用微软提供的gets_s函数,或换用其他方法输入

连琪19577547752问: 大神帮忙看一下,一个C语言程序,运行到gets()函数处就停止了.能帮忙看看是为什么吗?谢谢了 -
武隆县易贝回答: gets函数是在等待你输入字符串啊,当然会停止啦.输入字符串,用回车结束后方可以继续运行.当然按照这个代码,字符串不能超过20个字节(包括结束符).

连琪19577547752问: C语言,gets突然不能用了, -
武隆县易贝回答: source_name后面多了一个右括号.

连琪19577547752问: 求帮助c程序帮忙改一下错误 #include<stdio.h> main() { char a[81]; a=gets(); puts('a'); } -
武隆县易贝回答: #include<stdio.h> void main() {char a[81]; ///你的程序有几点错误,首先a定义为80个字符,如果输入超过80会越界gets(a); //出现错误 gets的用法错了,改正为gets(a);puts(a); //puts用来输出字符串的,如果你要输出a变量可以,但是不要加分号了 } //如果你想输出字符a,那就要用puts("a");希望对你有帮助

连琪19577547752问: C语言gets 和 scanf -
武隆县易贝回答: 我忍不住说一下, 希望已经给出答案的同学们不要介意.scanf("%s%f", name[i], &score); 如果你输入 “abc 1234” (注意 引号不是输入的数据,只是为了方便阅读) 这个时候 name[i]会读取数据的,但是读取的数据遇到空格就视为读取结束.这样剩余下的数据就是 一个空格外加1234.当score开始读取的时候,读到的第一个数据是一个空格,而不是希望的float类型的数据,因此整个缓冲区的流都乱了,所有的数据全部没有用处. 解决的办法就是在 %s与%f之间加上一个空格,就可以解决这个问题.

连琪19577547752问: C语言 gets() 问题 -
武隆县易贝回答: 可能是你定义的a的长度不够,比方说你定义了a这个char类型的长度是10,但是你在输入的时候却大于10.明白了吗?

连琪19577547752问: 在C语言中为什么gets函数有的时候不推荐用? 编译的时候编译器都会提示warning? -
武隆县易贝回答: 这是关系到信息安全领域的一些知识.会有这样的一个情况:char a[12]; gets(a); 当你输入的东西远比12要长时,他还是会接收并写入空间.这样就溢出了,覆盖掉后面的相应空间.也就是说他写入了不该他来写的东西.如果写得设计好点,完全可以通过这个去完成一些不好的事情.编译器一般会提示你去换个安全的函数,来避免这个情况.

连琪19577547752问: C语言 gets()输入问题! -
武隆县易贝回答: char max[10]; 这个数组只能存储10个字符!gets(p+i++); 这里,一直在这一个数组中,循环输入多个字符(字符串),超出max[9]的位置就越界了,当然就报错了.qt上不报错,只能是你的环境运气好,越界的位置并没有其它程序使用,所以没有出错.


本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网