
我试着编了一个小C程序,可是老出错,谁能帮我改一下,小弟在此感激不尽?
/*我写一个小程序,可总是总是出错,好多天了,改不过来,想请您替我改一下这个程序的目的是比较两个文件的不同之处,两个文件都是由不同的字符串组成,每个字符串都由“,”隔开,...
/*
我写一个小程序,可总是总是出错,好多天了,改不
过来,想请您替我改一下
这个程序的目的是比较两个文件的不同之处,两个文件都是由不同
的字符串组成,每个字符串都由“,”隔开,每个字符串都不超过
8个字符,assign()函数是以“,”为间隔,将每个字符串赋于一个二维
字符数组,compare()函数查找不同的字符串,并输出
比方说:
file1: 001,002,003,004, file2: 001,002,003,004,
006,2135,123,4567, 006,2135,123,4567,
123456,
file2中比file1中多了一个12356的字符串,我要把它找出并输出,两
个文件中的字符串的顺序不一样,
*/
/*
我还有几个问题想问
1:系统自带的dos程序像copy、fc、dir、type,运行后输出结果并返回cmd窗口,
我也想在我的程序里也是这样,应该怎么做?在汇编里所提到的什么返回到dos,
是不是指就是这个?
2:用swithc语句时,case后面的表达式必须是算术表达式?不能为字符吗?
3:NULL 是什么是0吗?我在VC++头文件里,看到用宏定义怎么说它是0,
4:我在编译时它老是说:错误 myfc.c 67: 需要逻辑0或非0在 assign 函数中
我开始是用switch,就是这,我又改为了if,还是这个样子,
*/
#include "Stdio.h"
#include "Conio.h"
int main(int argc,char*argv[])
{
char string1[100][8],string2[100][8];
FILE * file1,* file2;
void assign(FILE*filename,char string[100][8]);
void compare(char string1[100][8],char string2[100][8]);
if(argc==1||argv[1]=="/?")printf("example:myfc file1path file2path\n");
else printf("please input correct syntax like this:/n myfc file1path file2path");
assign(file1,string1[100][8]);
assing(file2,string2[100][8]);
compare(string1[100][8],string2[100][8]);
}
void assign(FILE*filename,char string[100][8])
{
char ch , str[8];
int i=0,j=0;
while(filename=fopen("*argv[1]","r")!=NULL&&(ch=fgetc(filename))!=NULL)
{
if((ch=fgetc(filename)==' ')==1)continue;
else if((ch=fgetc(filename)==',')==1)
str[j++]=ch;
else string[i++]=str;i=0;
/*switch(ch=fgetc(filename))
{
case " ":continue;
case ",":string[0++]=ch;
default:ch[i++]=a;i=0;
}*/
}
}
void compare(char string1[100][8],char string2[100][8])
{
int i,h,result;
char *str1,*str2;
for(i=0;i<100;i++)
{
str1=string1[i];
for(h=0;h<100;h++)
{
str2=string2[h];
result=strcmp(*str1,*str2);
if(result==0)break;
}
if(result!=0)puts(str2);
}
} 展开
我写一个小程序,可总是总是出错,好多天了,改不
过来,想请您替我改一下
这个程序的目的是比较两个文件的不同之处,两个文件都是由不同
的字符串组成,每个字符串都由“,”隔开,每个字符串都不超过
8个字符,assign()函数是以“,”为间隔,将每个字符串赋于一个二维
字符数组,compare()函数查找不同的字符串,并输出
比方说:
file1: 001,002,003,004, file2: 001,002,003,004,
006,2135,123,4567, 006,2135,123,4567,
123456,
file2中比file1中多了一个12356的字符串,我要把它找出并输出,两
个文件中的字符串的顺序不一样,
*/
/*
我还有几个问题想问
1:系统自带的dos程序像copy、fc、dir、type,运行后输出结果并返回cmd窗口,
我也想在我的程序里也是这样,应该怎么做?在汇编里所提到的什么返回到dos,
是不是指就是这个?
2:用swithc语句时,case后面的表达式必须是算术表达式?不能为字符吗?
3:NULL 是什么是0吗?我在VC++头文件里,看到用宏定义怎么说它是0,
4:我在编译时它老是说:错误 myfc.c 67: 需要逻辑0或非0在 assign 函数中
我开始是用switch,就是这,我又改为了if,还是这个样子,
*/
#include "Stdio.h"
#include "Conio.h"
int main(int argc,char*argv[])
{
char string1[100][8],string2[100][8];
FILE * file1,* file2;
void assign(FILE*filename,char string[100][8]);
void compare(char string1[100][8],char string2[100][8]);
if(argc==1||argv[1]=="/?")printf("example:myfc file1path file2path\n");
else printf("please input correct syntax like this:/n myfc file1path file2path");
assign(file1,string1[100][8]);
assing(file2,string2[100][8]);
compare(string1[100][8],string2[100][8]);
}
void assign(FILE*filename,char string[100][8])
{
char ch , str[8];
int i=0,j=0;
while(filename=fopen("*argv[1]","r")!=NULL&&(ch=fgetc(filename))!=NULL)
{
if((ch=fgetc(filename)==' ')==1)continue;
else if((ch=fgetc(filename)==',')==1)
str[j++]=ch;
else string[i++]=str;i=0;
/*switch(ch=fgetc(filename))
{
case " ":continue;
case ",":string[0++]=ch;
default:ch[i++]=a;i=0;
}*/
}
}
void compare(char string1[100][8],char string2[100][8])
{
int i,h,result;
char *str1,*str2;
for(i=0;i<100;i++)
{
str1=string1[i];
for(h=0;h<100;h++)
{
str2=string2[h];
result=strcmp(*str1,*str2);
if(result==0)break;
}
if(result!=0)puts(str2);
}
} 展开
展开全部
这篇源代码里的绝大部分错误是可以简单改正的。只要仔细看看就可以了
对四个问题的解答:
一:在Dos下,这些命令用位于dos.h(还是System.h,我也记不清了)中的System(char x[x])函数来实现,该函数可执行字符串参数所表示的DOS命令,具体见MSDN或turboc参考
二:可以,可能你的错误在于格式,你可以把格式换工整些看看。另外表达必须与数据类型匹配。
三:NULL从数值的意义上说是0,一般它表示“无、错误”的情况。
四:同二,另外你的main函数没有返回值可能是个问题。
我已很久没有用电脑干过这些事了,不知对不对,只是随看随写。
对四个问题的解答:
一:在Dos下,这些命令用位于dos.h(还是System.h,我也记不清了)中的System(char x[x])函数来实现,该函数可执行字符串参数所表示的DOS命令,具体见MSDN或turboc参考
二:可以,可能你的错误在于格式,你可以把格式换工整些看看。另外表达必须与数据类型匹配。
三:NULL从数值的意义上说是0,一般它表示“无、错误”的情况。
四:同二,另外你的main函数没有返回值可能是个问题。
我已很久没有用电脑干过这些事了,不知对不对,只是随看随写。
2007-01-05
展开全部
#include <stdio.h>
#include <graphics.h>
main ()
{
Int gr=DETECT, gm;
Char ch;
Int x=200,y=100;
Initgraph (&gr,&gm,…);
Cleardevice();
Setbkcolor (BLUE);
Setcolor(WHTTE);
Outtextxy(100,10,"Line");
Outtextxy(100,20,"Circle");
Outtextxy(100,30,"Rectangle");
Outtextxy(50,50,"Enter your choice:");
Setcolor(YELLOW);
If(ch=='L')
{
Outtextxy (x,y,"Draw a LINE");
Line (200,200,400,400);
}
Else if (ch=='C')
{outtextxy (x,y,"Draw a CIRCLE");
Circle (300,300,100);
}
Else if (ch=='R')
{outtextxy (x,y,"Draw a RECTANGLE");
Rectangle (200,200,400,400);
}
Else
Outtextxy (x,y,"Input Error !");
Getch ();
Closegraph ()
}
我这里也有一个程序,你们 帮我解决一下好吗?拜托了!!!!!!!!!只有一个错误!!!!!!!!!!!!
#include <graphics.h>
main ()
{
Int gr=DETECT, gm;
Char ch;
Int x=200,y=100;
Initgraph (&gr,&gm,…);
Cleardevice();
Setbkcolor (BLUE);
Setcolor(WHTTE);
Outtextxy(100,10,"Line");
Outtextxy(100,20,"Circle");
Outtextxy(100,30,"Rectangle");
Outtextxy(50,50,"Enter your choice:");
Setcolor(YELLOW);
If(ch=='L')
{
Outtextxy (x,y,"Draw a LINE");
Line (200,200,400,400);
}
Else if (ch=='C')
{outtextxy (x,y,"Draw a CIRCLE");
Circle (300,300,100);
}
Else if (ch=='R')
{outtextxy (x,y,"Draw a RECTANGLE");
Rectangle (200,200,400,400);
}
Else
Outtextxy (x,y,"Input Error !");
Getch ();
Closegraph ()
}
我这里也有一个程序,你们 帮我解决一下好吗?拜托了!!!!!!!!!只有一个错误!!!!!!!!!!!!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询