简单看了一下你的程序我发现就是三目运算符和函数说明上出现报错
源程序:
1 #include<string.h>
2 #include<stdio.h>
3
4 FILE *fout;
5
6
7 int main()
8 {
9 fout=fopen("myf2.out","w");
10 char s1[100];
11 char s2[100];
12 char s[200];
13 int change(char *a,char *b,char *c); //函数说明与调用的不一致 27行
14 printf("请输入字符串1:\n");
15 fprintf(fout,"请输入字符串1:\n");
16 scanf("%s",s1);
17 printf("请输入字符串2:\n");
18 fprintf(fout,"请输入字符串2:\n");
19 scanf("%s",s2);
20 change(s1,s2,s);
21 printf("%s",s);
22 fprintf(fout,"%s",s);
23 fclose(fout);
24 }
25
26
27 void change(char *a,char *b,char *c) //13行对应
28 {
29 int longb=strlen(b),i=0,j=longb-1,t,k;
30 for(;i<j;i++,j--)
31 {
32 t=*(b+i);
33 *(b+i)=*(b+j);
34 *(b+j)=t;
35 }
36 longa=strlen(a);
37 longb>longa?t=longa,j=1:t=longb,j=0;//三目运算符优先级高这样写就成了 (longb>longa?t=longa,j=1:t=longb,j)=0;显然等号左边没有值可以赋。
38 for(i=0,k=0;i<t;i++)
39 {
40 *(c+k++)=a[i];
41 *(c+k++)=b[i];
42 }
43 if(j==0)
44 for(;i<longa;i++)*(c+k++)=a[i];
45 else
46 for(;i<longb;i++)*(c+k++)=b[i];
47 }
修改后的:
1 #include<string.h>
2 #include<stdio.h>
3
4 FILE *fout;
5
6
7 int main()
8 {
9 fout=fopen("myf2.out","w");
10 char s1[100];
11 char s2[100];
12 char s[200];
13 void change(char *a,char *b,char *c); //修改成对应的
14 printf("请输入字符串1:\n");
15 fprintf(fout,"请输入字符串1:\n");
16 scanf("%s",s1);
17 printf("请输入字符串2:\n");
18 fprintf(fout,"请输入字符串2:\n");
19 scanf("%s",s2);
20 change(s1,s2,s);
21 printf("%s",s);
22 fprintf(fout,"%s",s);
23 fclose(fout);
24}
25
26
27 void change(char *a,char *b,char *c)
28 {
29 int longb=strlen(b),i=0,j=longb-1,t,k;
30 for(;i<j;i++,j--)
31 {
32 t=*(b+i);
33 *(b+i)=*(b+j);
34 *(b+j)=t;
35 }
36 int longa=strlen(a);
37 longb>longa?(t=longa,j=1):(t=longb,j=0); //三目运算加上括号就清楚了
38 for(i=0,k=0;i<t;i++)
39 {
40 *(c+k++)=a[i];
41 *(c+k++)=b[i];
42 }
43 if(j==0)
44 for(;i<longa;i++)*(c+k++)=a[i];
45 else
46 for(;i<longb;i++)*(c+k++)=b[i];
47 }
|