#include<stdio.h>
int main(int b,char *argu[])
{
int i,j,k,n,l;
char c[500]={0},a[500][500]={0},m[500]={0};
FILE *in,*out;
in=fopen(argu[1],"r");
out=fopen(argu[2],"w");
fgets(c,100,in);
i=j=k=0;
while(c[i]!='\0')
{
while(c[i]!=' ')
{
a[j][k]=c[i];
k++;
i++;
}
a[j][k]='\0';
j++;
i++;
k=0;
}
n=j;
for(i=0;i<n;i++)
{
for(j=i+1;j<n;j++)
{
if(a[i][0]==a[j][0])
{
for(k=0;a[j][k]!='\0';k++)
{
if(a[i][k]!=a[j][k])
break;
else
continue;
}
if(a[j][k]=='\0')
{
for(l=0;a[j][l]!='\0';l++)
a[j][l]=0;
}
}
}
}
for(i=0;i<n;i++)
{
for(k=0;k<n;k++)
if(a[k+1][0]<a[k][0])
{
for(j=0;a[k][j]!='\0';j++)
m[j]=a[k][j];
m[j]=0;
{
if(a[k+1][0]==0)
{
for(j=0;a[k][j]!=0;j++)
a[k][j]=0;
}
else
for(j=0;a[k+1][j]!='\0';j++)
{
a[k][j]=a[k+1][j];
}
a[k][j]=0;
}
for(j=0;m[j]!='\0';j++)
{
a[k+1][j]=m[j];
}
a[k+1][j]=0;
}
}
for(i=1;i<n+1;i++)
{
if(a[i][0]==0)
continue;
else
{
for(j=0;a[i][j]!='\0';j++)
{
if(a[i][j+1]!=0)
fprintf(out,"%c",a[i][j]);
else
fprintf(out,"%c ",a[i][j]);
}
}
}
fclose(in);
fclose(out);
return 0;
}
其他功能都没问题,就是命令行参数读不进
如果直接在编译器中运行(后面没有参数,文件in用的是第一个参数*argu[1],文件out用的是第二个参数*argu[2]),那么就会崩溃。因为没有参数,那么文件打开就失败了,而继续对打开失败的文件指针进行操作就崩溃了。
正确的用法是,编译成.exe文件后,在DOS窗口中进入这个.exe文件所在目录,然后输入“这个.exe文件名 输入文件名字 输出文件名 回车”才行。比如我编译好的文件名是1.exe,输入文件名是input.txt,准备输出的文件叫out.txt,那么就不会崩溃了,如图
要避免没有输入参数崩溃的情况,可以在程序中进行文件打开判断,在
in=fopen(argu[1],"r");
out=fopen(argu[2],"w");
后面增加打开判断
if(in == NULL || out == NULL) exit(1);
就不至于没有参数的时候崩溃,而是直接退出(或者也可以在这个if后面加上使用说明的输出信息)。
这个c语言代码哪里出问题了?一运行就崩溃
如果直接在编译器中运行(后面没有参数,文件in用的是第一个参数*argu[1],文件out用的是第二个参数*argu[2]),那么就会崩溃。因为没有参数,那么文件打开就失败了,而继续对打开失败的文件指针进行操作就崩溃了。正确的用法是,编译成.exe文件后,在DOS窗口中进入这个.exe文件所在目录,然后输入“...
这段C语言代码哪里出问题了,为什么一运行输入数字和y或n后就弹出已停止...
有两个问题,首先,输入字符型时,scanf("%c",&a);这儿有问题,应该scanf(" %c",&a),在%c前面空一下,否则接受不到。第二,printf("邮资是%s元\\n",s);这儿有点问题了。改一下就好……记得好评哦,上面两楼都没提出第一个问题,看来没有仔细看。
C语言中,程序为什么会崩溃?
在C语言中,程序没有报错并不意味着程序一定是正确的。有时候,程序可能会出现逻辑错误或者运行时错误,导致程序无法执行或者输出不符合预期。以下是一些常见的导致程序无法执行的原因:1. 程序陷入死循环:程序在某个地方出现了死循环,使得程序无法继续向下执行。如果程序似乎无法结束,可以检查程序是否存在...
C语言程序运行后 出现exe停止工作 为什么呢?
C语言程序运行出现exe停止工作的原因是因为内存溢出和编译器错误。第一种:内存溢出 内存溢出(out of memory)通俗理解就是内存不够,程序所需要的内存远远超出了主机内安装的内存所承受大小,就叫内存溢出。系统会提示内存溢出,有时候会自动关闭软件,重启电脑或者软件后释放掉一部分内存又可以正常运行该软...
C语言程序一运行就崩溃是什么情况
runtime error (运行时错误)就是程序运行到一半,程序就崩溃了。比如说:①除以零 ②数组越界:int a[3]; a[10000000]=10;③指针越界:int * p; p=(int *)malloc(5 * sizeof(int)); *(p+1000000)=10;④使用已经释放的空间:int * p; p=(int *)malloc(5 * sizeof(int));free...
C语言里程序编译无误但运行会弹出程序已停止运行是为什么
编译器错误 部分编译器由于所使用的标准不同(例如在一台机器上使用的可能是C99标准,而另一台机器上使用的是C11标准),或是因为编译器链接库的损坏,在少数情况下也可能导致程序出现不限于崩溃退出的异常错误,通常解决方法是到编译器官方网站下载最新版的IDE安装。
C语言崩溃是什么问题
2、指针未分配内存(即专业人士所说的野指针)就直接使用,导致访问不允许访问的内存单元;例如:int *p;没分配内存就赋值*p=25;3、标准C函数未按要求调用,有时会出错误结果,有时会导致程序崩溃;4、试图修改不允许修改的指针。例如:int a[20], b[30];a=b; \/\/试图将数组a所等价的指针a...
初学c语言遇到这个不知道怎么弄,一运行就退出?
你的代码调用了系统dll中代码,而如该dll不包含调试信息,你就不能调试这些dll,这不说明程序错。
求C语言大神指教,为什么我这段代码运行以后执行1操作会崩溃
int n0;char name2[20];int year;int month;int day;}record;\/\/定义全局变量 数组定义的小了,所以超过2个以上的数据就不能存储了record red[M]={{"test",98,"test1",2008,8,8},{"张三",97,"李四",2009,10,20}};\/\/\/主函数在这里\/\/\/void main(){while(1){\/\/清屏system("CLS"...
求问个c语言问题 我这部分代码哪有问题 为什么一运行程序就停止工作
在定义的时候,要给出确切的数值,即不能定义为int a[n-1],*p[n-1];char c[n];改法:1.你可以尝试定义一个常量,即#define n 100 2.可以动态开辟一个数组 scanf("&d",&n);int *a=NULL;\/\/一般初始化为空,防止野指针 a=(int *)malloc(sizeof(int)*(n-1));\/\/头文件为#...