C语言 如何防止输入格式错误

C语言 如何防止输入格式错误,第1张

可以通过scanf来控制输入格式,当scanf返回值不正确时,数升即为输入格式错误,这时清除输入缓冲,并提示重新输入。

scanf为C语言格式化输入函数,第一个参数为格式化字符串,可以用来确定输入格式。其返回值为正确输入的变量总数,当格式错误时,输入就会产生错误,返回值自然会不正确。于是通过判断返回值,可以知道是否有格式错误出现。

参考代码如下:

int a,b

int ret

//循环输入a,b值。如果格凳毕拍式错误,重新输入枣羡。如果得到正确值,终止输入。

while(1)

{

ret = scanf("%d,%d", &a,&b)//必须以逗号分隔。

if(ret != 2)//格式错误。

{

fflush(stdin)//清除输入缓冲,抛弃非法字符。

printf("输入格式错误,请重新输入。\n")//提示重新输入。

}

else

break//输入正确,退出循环。

}

题目要求是一次性读入多行,输入EOF结束后蔽凳,再一次性输出多行

你的代码是每读入一行,马肆并判上就进行处理并输出

应该每读入一行,存到一个二维字符数组中,最后再统一输出。裂改

参考代码如下:

#include<stdio.h>

#include<string.h>

int main()

{

int i, j, s, l = 0

char a[85][100]

while (gets(a[l]) != NULL)

{

s = strlen(a[l])

for (i = 0 i < s i++)

if (a[l][i] == ' ')

{

for (j = i j < s j++)

   a[l][j] = a[l][j+1]

s--

i--

}

l++

}

for (i = 0 i < l i++)

puts(a[i])

return 0

}

编译通过,运行结果为:

Hello World

1 2 3

Nice to see you

ab x

(以上为输入,以下为输出)

HelloWorld

123

Nicetoseeyou

abx

望采纳,谢谢~

你的错误是没加头文件,因为使用printf需要调用库函数 stdio.h。

符号名包括模块名、常量名、标号名、子程序名等。这些名字应该能反映它所代表的实际东西,具有一定的意义,使其能够见名知义,有助于对程序功能的理解。命名采用匈牙利命名法。具体规则如下:

(1)所有宏定义、枚举常数和const变量,用大写字母命名。在复合词里用下划线隔开每个词。

(2)复合词中每个单词的第一个字母大写。除了规则5.1.1.1以外,避免使用下划线。

(3)类、类型定义和枚举型名的第一个字母大写。

(4)函数名是复合词的,第一个词采用全部小写,随后每个单词采用第一个字母大写,其它字母小写方式;如果是单个词的,采用全部小写方式。

(5)循环变量可采用i, j, k等,不受上述规则限制。

(6) 类的成员变量应采用m_开头。

(7) 全局变量词头为g_ 。

(8) 临时变量词头为tmp_ 。

(9) 对结构体内的变量命名, 遵循变量的具体含义命名原则

(10)用小写字母的前缀表示变量的类型,前缀的下一个字母用大写。

——文件之中不得存在无规则的空行,比如说连烂带续十个空行。

一携旅般来讲函数与函数之间的空行为2-3行;

在函数体内部,在逻辑上独立的两个函数块可适当空行,辩历凳一般为1-2行。

——程序编写首先应考虑清晰性,不要刻意追求技巧性而使得程序难以理解。

——每行长度尽量避免超过屏幕宽度,应不超过80个字符。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12277985.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存