c语言函数输入错误 c语言否则输出错误怎么弄

关于c语言scanf函数输入错误格式的问题

scanf函数输入完成需要一个回车,getchar接收的是一个字符。

我们提供的服务有:成都网站设计、网站建设、微信公众号开发、网站优化、网站认证、杂多ssl等。为1000+企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的杂多网站制作公司

要么就是你输入的内容放入字符串中然后逐个比较。

要么你可以getchar每一个字符,然后转化成ascii码,通过判定数值区间来判定输入的字符是否为数字。

C语言,定义指针函数,用scanf输入,总是错误,求解!

你查一下你的头文件"stdafx.h"中有没有包含

#include

stdio.h引用。估计是没有引用到。你也可以直接在这个文件中添加#include

stdio.h

C语言定义短整型,用scanf函数输入是发生未知错误

#includestdio.h

#includemath.h

int main()

{ long int jisuan(short int a,short int n);

short int a=0,n,i;

printf("please enter:\na=");

i=scanf("%hd",a);

fflush(stdin);

printf("n=");

scanf("%hd",n);

fflush(stdin);

printf("a=%hd\tn=%hd\n",a,n);

printf("i=%d\n",i); //i用于检测a是否有输入;

}

为什么我的C语言程序在调用函数时出现错误?

1、一般是你在调用函数的时候传递的是int类型的数据,但那个函数定义的参数类型不是int(比如是结构或者指针或者数组)。

2、下面为C语言的错误大全及中文解释:

1: Ambiguous operators need parentheses — 不明确的运算需要用括号括起

2: Ambiguous symbol xxx — 不明确的符号

3: Argument list syntax error — 参数表语法错误

4: Array bounds missing — 丢失数组界限符

5: Array size toolarge — 数组尺寸太大

6: Bad character in paramenters — 参数中有不适当的字符

7: Bad file name format in include directive — 包含命令中文件名格式不正确

8: Bad ifdef directive synatax — 编译预处理ifdef有语法错

9: Bad undef directive syntax — 编译预处理undef有语法错

10: Bit field too large — 位字段太长

11: Call of non-function — 调用未定义的函数

12: Call to function with no prototype — 调用函数时没有函数的说明

13: Cannot modify a const object — 不允许修改常量对象

14: Case outside of switch — 漏掉了case 语句

15: Case syntax error — Case 语法错误

16: Code has no effect — 代码不可能执行到

17: Compound statement missing{ — 分程序漏掉"{"

18: Conflicting type modifiers — 不明确的类型说明符

19: Constant expression required — 要求常量表达式

20: Constant out of range in comparison — 在比较中常量超出范围

21: Conversion may lose significant digits — 转换时会丢失意义的数字

22: Conversion of near pointer not allowed — 不允许转换近指针

23: Could not find file xxx — 找不到XXX文件

24: Declaration missing ; — 说明缺少";"

25: Declaration syntax error — 说明中出现语法错误

26: Default outside of switch — Default 出现在switch语句之外

27: Define directive needs an identifier — 定义编译预处理需要标识符

28: Division by zero — 用零作除数

29: Do statement must have while — Do-while语句中缺少while部分

30: Enum syntax error — 枚举类型语法错误

31: Enumeration constant syntax error — 枚举常数语法错误

32: Error directive :xxx — 错误的编译预处理命令

33: Error writing output file — 写输出文件错误

34: Expression syntax error — 表达式语法错误

35: Extra parameter in call — 调用时出现多余错误

36: File name too long — 文件名太长

37: Function call missing ) — 函数调用缺少右括号

38: Fuction definition out of place — 函数定义位置错误

39: Fuction should return a value — 函数必需返回一个值

40: Goto statement missing label — Goto语句没有标号

41: Hexadecimal or octal constant too large — 16进制或8进制常数太大

42: Illegal character x — 非法字符x

43: Illegal initialization — 非法的初始化

44: Illegal octal digit — 非法的8进制数字 A

45: Illegal pointer subtraction — 非法的指针相减

46: Illegal structure operation — 非法的结构体操作

47: Illegal use of floating point — 非法的浮点运算

48: Illegal use of pointer — 指针使用非法

49: Improper use of a typedefsymbol — 类型定义符号使用不恰当

50: In-line assembly not allowed — 不允许使用行间汇编

51: Incompatible storage class — 存储类别不相容

52: Incompatible type conversion — 不相容的类型转换

53: Incorrect number format — 错误的数据格式

54: Incorrect use of default — Default使用不当

55: Invalid indirection — 无效的间接运算

56: Invalid pointer addition — 指针相加无效

57: Irreducible expression tree — 无法执行的表达式运算

58: Lvalue required — 需要逻辑值0或非0值

59: Macro argument syntax error — 宏参数语法错误

60: Macro expansion too long — 宏的扩展以后太长

61: Mismatched number of parameters in definition — 定义中参数个数不匹配

62: Misplaced break — 此处不应出现break语句

63: Misplaced continue — 此处不应出现continue语句

64: Misplaced decimal point — 此处不应出现小数点

65: Misplaced elif directive — 不应编译预处理elif

66: Misplaced else — 此处不应出现else

67: Misplaced else directive — 此处不应出现编译预处理else

68: Misplaced endif directive — 此处不应出现编译预处理endif

69: Must be addressable — 必须是可以编址的

70: Must take address of memory location — 必须存储定位的地址

71: No declaration for function xxx — 没有函数xxx的说明

72: No stack — 缺少堆栈

73: No type information — 没有类型信息

74: Non-portable pointer assignment — 不可移动的指针(地址常数)赋值

75: Non-portable pointer comparison — 不可移动的指针(地址常数)比较

76: Non-portable pointer conversion — 不可移动的指针(地址常数)转换

77: Not a valid expression format type — 不合法的表达式格式

78: Not an allowed type — 不允许使用的类型

79: Numeric constant too large — 数值常太大

80: Out of memory — 内存不够用

81: Parameter xxx is never used — 能数xxx没有用到

82: Pointer required on left side of - — 符号-的左边必须是指针

83: Possible use of xxx before definition — 在定义之前就使用了xxx(警告)

84: Possibly incorrect assignment — 赋值可能不正确

85: Redeclaration of xxx — 重复定义了xxx

86: Redefinition of xxx is not identical — xxx的两次定义不一致

87: Register allocation failure — 寄存器定址失败

88: Repeat count needs an lvalue — 重复计数需要逻辑值

89: Size of structure or array not known — 结构体或数给大小不确定

90: Statement missing ; — 语句后缺少";"

91: Structure or union syntax error — 结构体或联合体语法错误

92: Structure size too large — 结构体尺寸太大

93: Sub scripting missing ] — 下标缺少右方括号

94: Superfluous with function or array — 函数或数组中有多余的""

95: Suspicious pointer conversion — 可疑的指针转换

96: Symbol limit exceeded — 符号超限

97: Too few parameters in call — 函数调用时的实参少于函数的参数不

98: Too many default cases — Default太多(switch语句中一个)

99: Too many error or warning messages — 错误或警告信息太多

100: Too many type in declaration — 说明中类型太多

101: Too much auto memory in function — 函数用到的局部存储太多

102: Too much global data defined in file — 文件中全局数据太多

103: Two consecutive dots — 两个连续的句点

104: Type mismatch in parameter xxx — 参数xxx类型不匹配

105: Type mismatch in redeclaration of xxx — xxx重定义的类型不匹配

106: Unable to create output file xxx — 无法建立输出文件xxx

107: Unable to open include file xxx — 无法打开被包含的文件xxx

108: Unable to open input file xxx — 无法打开输入文件xxx

109: Undefined label xxx — 没有定义的标号xxx

110: Undefined structure xxx — 没有定义的结构xxx

111: Undefined symbol xxx — 没有定义的符号xxx

112: Unexpected end of file in comment started on line xxx — 从xxx行开始的注解尚未结束文件不能结束

113: Unexpected end of file in conditional started on line xxx — 从xxx 开始的条件语句尚未结束文件不能结束

114: Unknown assemble instruction — 未知的汇编结构

115: Unknown option — 未知的操作

116: Unknown preprocessor directive: xxx — 不认识的预处理命令xxx

117: Unreachable code — 无路可达的代码

118: Unterminated string or character constant — 字符串缺少引号

119: User break — 用户强行中断了程序

120: Void functions may not return a value — Void类型的函数不应有返回值

121: Wrong number of arguments — 调用函数的参数数目错

122: xxx not an argument — xxx不是参数

123: xxx not part of structure — xxx不是结构体的一部分

124: xxx statement missing ( — xxx语句缺少左括号

125: xxx statement missing ) — xxx语句缺少右括号

126: xxx statement missing ; — xxx缺少分号

127: xxx declared but never used — 说明了xxx但没有使用

128: xxx is assigned a value which is never used — 给xxx赋了值但未用过

C语言程序运行scanf函数输入字符出错?

scanf()在读取时不检查边界,所以可能会造成内存泄露,所以VS2013提供了scanf_s()来替代,在调用时,必须提供给scanf_s一个数字以表明读取多少位字符,用法为scanf_s("%c",letter,sizeof(letter)),否则,即使Ctrl+F7和Ctrl+F5通过了,程序的运行结果也可能与自己所期望大相径庭的。

如果非要用scanf函数,那么通过以下两种方式可以禁止警告:

(1)右击项目——属性——C/C++——预处理器——预处理器定义中增加_CRT_SECURE_NO_WARNINGS,然后点确定,退出。

(2)在函数最顶头进行定义:#define _CRT_SECURE_NO_WARNINGS,也可以禁止报错警告。

c语言编程中字符串复制函数编程程序出现错误,这是怎么回事?

这里原因是gets函数不安全,visual studio的后续产品已经不再支持此类函数,可以换成fgets(str1, sizeof(str1), stdin);

第一个参数是,字符存储地址,第二个是最大内存大小,第三个是从哪里读取,stdin是从键盘,也可以是文件指针表示从文件中读取。

其实strcpy出现提示也是不安全的,可以考虑使用strncpy函数。

以下是扩展资料

C语言gets函数,fgets函数的使用

gets从标准输入设备读字符串函数。可以无限读取,不会判断上限,以回车结束读取。函数的具体功能如下所示:从stdin流中读取字符串,直至接受到换行符或EOF时停止,并将读取的结果存放在buffer指针所指向的字符数组中。换行符不作为读取串的内容,读取的换行符被转换为‘\0’空字符,并由此来结束字符串。

使用gets函数的时候应注意以下要素:可以无限读取,不会判断上限,所以程序员应该确保buffer的空间足够大,以便在执行读操作时不发生溢出。如果溢出,多出来的字符将被写入到堆栈中,破坏一个或多个不相关变量的值。

这个事实导致gets函数只适用于玩具程序,为了避免这种情况,我们可以用fgets(stdin) 读取标准输入来替换gets()。为了向后兼容,gets删除换行符,gets并不将换行符存入缓冲区。

fgets函数用来从文件中读入字符串。fgets函数的调用形式如下:fgets(str,n,fp);此处,fp是文件指针;str是存放在字符串的起始地址;n是一个int类型变量。函数的功能是从fp所指文件中读入n-1个字符放入str为起始地址的空间内;如果在未读满n-1个字符之时,已读到一个换行符或一个EOF(文件结束标志),则结束本次读操作,读入的字符串中最后包含读到的换行符。因此,确切地说,调用fgets函数时,最多只能读入n-1个字符。读入结束后,系统将自动在最后加'\0',并以str作为函数值返回。原型是char *fgets(char *s, int n, FILE *stream);

同时注意scanf函数和gets函数混用时的注意事项:

1、gets在scanf前调用,这种调用一般不会出现什么问题,可以正常输入。

2、scanf在gets前调用,这种情况就会出现问题,当输入完scanf中的变量时,运行到gets函数,则不让输入任何字符,出现此问题的原因是gets函数接收了scanf输入完后的回车符,解决的办法是在scanf和gets中间,用getchar函数接收掉回车符,这样就不会出现任何问题了。


文章名称:c语言函数输入错误 c语言否则输出错误怎么弄
文章出自:http://azwzsj.com/article/doocghi.html