黑马程序员技术交流社区
标题:
C语言的一个问题7 8 9行报错error
[打印本页]
作者:
那个Mr_Z
时间:
2014-4-2 12:41
标题:
C语言的一个问题7 8 9行报错error
#include<string.h>
#include<stdio.h>
FILE *fout;
int main()
{
fout=fopen("myf2.out","w");
char s1[100];
char s2[100];
char s[200];
int change(char *a,char *b,char *c);
printf("请输入字符串1:\n");
fprintf(fout,"请输入字符串1:\n");
scanf("%s",s1);
printf("请输入字符串2:\n");
fprintf(fout,"请输入字符串2:\n");
scanf("%s",s2);
change(s1,s2,s);
printf("%s",s);
fprintf(fout,"%s",s);
fclose(fout);
}
void change(char *a,char *b,char *c)
{
int longb=strlen(b),i=0,j=longb-1,t,k;
for(;i<j;i++,j--)
{
t=*(b+i);
*(b+i)=*(b+j);
*(b+j)=t;
}
longa=strlen(a);
longb>longa?t=longa,j=1:t=longb,j=0;
for(i=0,k=0;i<t;i++)
{
*(c+k++)=a[i];
*(c+k++)=b[i];
}
if(j==0)
for(;i<longa;i++)*(c+k++)=a[i];
else
for(;i<longb;i++)*(c+k++)=b[i];
}
作者:
远人
时间:
2014-4-2 12:57
下次把你的问题用输入工具里的代码工具输入,不要直接复制,而且问题要问清楚,你这样问问题,大家只能看看而已,找代码行都难得找。
作者:
Hi围城
时间:
2014-4-2 14:37
#include<string.h>
#include<stdio.h>
FILE *fout;
int main()
{
fout=fopen("myf2.out","w");
char s1[100];
char s2[100];
char s[200];
//int change(char *a,char *b,char *c); // 和下面的函数同名
printf("请输入字符串1:\n");
fprintf(fout,"请输入字符串1:\n");
scanf("%s",s1);
printf("请输入字符串2:\n");
fprintf(fout,"请输入字符串2:\n");
scanf("%s",s2);
change(s1,s2,s); // 此处变量一直没被赋值,和函数参数起冲突
printf("%s",s);
fprintf(fout,"%s",s);
fclose(fout);
}
void change(char *a,char *b,char *c)
{
int longb=strlen(b),i=0,j=longb-1,t,k;
for(;i<j;i++,j--)
{
t=*(b+i);
*(b+i)=*(b+j);
*(b+j)=t;
}
//longa=strlen(a); // longa未定义
int longa = strlen(a);
//longb>longa?t=longa,j=1:t=longb,j=0; // 此处应加括号
longb>longa?(t=longa,j=1):(t=longb,j=0);
for(i=0,k=0;i<t;i++)
{
*(c+k++)=a[i];
*(c+k++)=b[i];
}
if(j==0)
for(;i<longa;i++)*(c+k++)=a[i];
else
for(;i<longb;i++)*(c+k++)=b[i];
}
// 给您改到最后,您的变量定义模糊,编译无法通过。
复制代码
作者:
Freedam
时间:
2014-4-2 14:51
简单看了一下你的程序我发现就是三目运算符和函数说明上出现报错
源程序:
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 }
作者:
那个Mr_Z
时间:
2014-4-2 17:18
Hi围城 发表于 2014-4-2 14:37
多谢,已经改过了,3Q:loveliness:
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2