if(strcmp(la,lb)!=0)
{
puts(la);
puts(lb);
}
else
{
puts(la);
}
代码中la,lb是字符串,但是我定义char *pla=la,*plb=lb再把la,lb换成指针型变量pla,plb输出是空的,原来的代码不会这样,请问为什么呢。
下面是完整错误代码,写的很垃圾。
#include <stdio.h>
#include <string.h>
int main()
{
char a[10001],la[10001],b[10001],lb[10001];
char *pa,*pla;
pa=a;
pla=la;
gets(pa);
for(pa=a+1;*pa!='\0';pa++)
{
if(*pa%2==*(pa-1)%2)
{
if(*pa>*(pa-1))
{
*pla=*pa;
pla++;
}
else
{
*pla=*(pa-1);
pla++;
}
}
}
char *pb,*plb;
pb=b;
plb=lb;
gets(pb);
for(pb=b+1;*pb!='\0';pb++)
{
if(*pb%2==*(pb-1)%2)
{
if(*pb>*(pb-1))
{
*plb=*pb;
}
else
{
*plb=*(pb-1);
}
plb++;
}
}
if(strcmp(pla,plb)!=0)
{
puts(pla);
puts(plb);
}
else
{
puts(pla);
}
return 0;
}
修改处见注释,供参考:
#include <stdio.h>
#include <string.h>
int main()
{
char a[10001], la[10001], b[10001], lb[10001];
char* pa, * pla;
pa = a;
pla = la;
gets(pa);
for (pa = a + 1; *pa != '\0'; pa++)
{
if (*pa % 2 == *(pa - 1) % 2)
{
if (*pa > *(pa - 1))
{
*pla = *pa;
pla++;
}
else
{
*pla = *(pa - 1);
pla++;
}
}
}
*pla = '\0'; //字符串la[]结尾加入结束标志 ‘\0'
pla = la; //指针 pla 重新指向字符串 la 首地址
char* pb, * plb;
pb = b;
plb = lb;
gets(pb);
for (pb = b + 1; *pb != '\0'; pb++)
{
if (*pb % 2 == *(pb - 1) % 2)
{
if (*pb > *(pb - 1))
{
*plb = *pb;
}
else
{
*plb = *(pb - 1);
}
plb++;
}
}
*plb = '\0'; //字符串lb[]结尾加入结束标志 ‘\0'
plb = lb; //指针 plb 重新指向字符串 lb 首地址
if (strcmp(pla, plb) != 0)
{
puts(pla);
puts(plb);
}
else
{
puts(pla);
}
return 0;
}