c语言文本输入几组三角形边长的问题

来源:百度知道 编辑:UC知道 时间:2024/09/23 10:44:35
在线等待,回答的好我会额外奖励分,最高限额+20。
我做判断三角形的程序,我想要的是建立一个数据输入文本,内容是用户随便添加的N组三角形边长如:
1 2 3
4 5 6
3 3 3
然后对每组数据进行判断。我完成了结果的文本输出。
我现在做的程序代码如下:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
float a;
float b;
float c;
int k;
void writefile(){
FILE* fp;
int i;
if((fp=fopen("result.txt", "a+"))==NULL) exit(0);
fprintf(fp,"%f %f %f",a,b,c);
switch(k)
{ case 5: fprintf(fp,"\t\t\t边长存在小数\n");break;
case 1: fprintf(fp,"\t\t\t输入越界\n");break;
case 2: fprintf(fp,"\t\t\t等边三角形\n");break;
case 3: fprintf(fp,"\t\t\t等腰三角形\n");break;
case 4: fprintf(fp,"\t&

有语法错误:

1、强制转换类型
if(int(a)-a<0||int(b)-b<0||int(c)-c<0)

这里要写成 (int)a 这样的形式;

2、scanf() 函数用法错误

d 声明为 char 型,然在最后的输入时,却控制格式为 %s,这是非法的使用;如果改成 %c 格式,就会涉及到一个字符接收缓冲的问题,不然你的程序到那里就会自动退出,解决的办法是,修改 scanf 为:

sacnf("%c",&d);
d = getchar(); /*这句是用来接受回车的,不然回车会给d 变量接收去*/

楼上的也没必要把几个参数传给 writefile,因为那几个是全局变量,不传也不会有错误,更不是什么最大的错误。最大的错误就是后面的 scanf 函数的使用错误。

----------------读取参考程序---------------------------
#include <stdio.h>

int main()
{
FILE *ptr;
int i = 0;
int a,b,c;

if( ( ptr = fopen("test.txt", "r") ) == NULL )
printf("File could not be opened!\n");
else{
fscanf( ptr, "%d %d %d", &a,&b,&c);

while( !feof( ptr ) ){
printf("%d %d %d\n", a, b, c);
fscanf( ptr, "%d %d %d", &a,&b,&c);
}

fc