C语言for与数组
发布网友
发布时间:2022-08-01 11:48
我来回答
共3个回答
热心网友
时间:2024-11-11 00:01
好像只有第一种循环可以把结束符'\0',拷贝进去。
for(e=i-1;s1[e]!='\0';) //第一种
{
e++;
s1[k++]=s1[e];
}
后面两种都做不到这一点。因为你需要拷贝'\0'。不然程序就一直拷贝,直到内存溢出。
热心网友
时间:2024-11-11 00:01
for(e=i-1;s1[e]!='\0';) //第一种
{
e++;
s1[k++]=s1[e];
}
for(e=i-1;s1[e]!='\0';e++;) //第二种
s1[k++]=s1[e];
for(e=i;s1[e]!='\0';) 第三种
{
s1[k++]=s1[e];
e++;
}
三种写法编译都能通过,但是只有第一种写法运行能有结果,显示, 另两个运行没有结果显示并且程序会死掉. 我用Dev-C++和C-Free编译是一样的效果. 不知道是怎么回事. 下面是我弄的完整的程序.还有下面一个"--i"加上去就没结果出来了. 整个程序的结果也不对,只把第一个123删了,后面的都没有删掉.
#include<stdio.h>
char n[]="1233222312312323212123";
char m[]="123";
void aqueeze(char s1[],char s2[])
{
int i=0,j=0,k=0,e=0;
for(k=i=0;s1[i]!='\0';i++)
{
for(j=0;(s2[j]!='\0')&&(s1[i]==s2[j]);i++,j++);
if(s2[j]=='\0')
{
for(e=i-1;s1[e]!='\0';)
{
e++;
s1[k++]=s1[e];
}
}
// --i; //还有这里,加个 --i 程序就没结果了,不知道怎么回事
}
s1[k]='\0';
}
main ()
{
int i=0,j=0,o=0;
for(i=0;n[i]!='\0';i++)
putchar(n[i]);
putchar('\n');
for(j=0;m[j]!='\0';j++)
putchar(m[j]);
putchar('\n');
aqueeze(n,m);
for(o=0;n[o]!='\0';o++)
putchar(n[o]);
putchar('\n');
}
热心网友
时间:2024-11-11 00:02
C语言for与数组
in()
{
int i,n,a[3000];
scanf("%d",