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个字符。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)