在编一个提取字符串的程序时,发现了一个问题,希望有大神可以解答
#include <stdio.h>#include <string.h>
int main()
{
char character[100]={"Fred male 25;John male 62;Anna female 16\0"};
char c[9][10];
int i=0,j=0,k=0,l=0;
char tmp[10]="\0";
while (true)
{
while (true)
{
tmp[k]=character[i];
if (character[i+1]==';' || character[i+1]=='\0' || character[i+1]==' ')
{
strcpy(c[j],tmp);
for (l=0;l<=2;l++)
{
tmp[l]='\0';//将tmp重新初始化
}
k=0;//使k重新变为0,让tmp的下标再次从0开始
i+=2;
break;
}
i++;
k++;
}
j++;
if (character[i-1]=='\0')
{
break;
}
}
for (j=0;j<=8;j++)
{
i=0;
while(c[j][i]!='\0')
{
printf("%c",c[j][i]);
i++;
}
printf("\n");
}
return 0;
}
结果是这样的:
问题:在while循环内部的for循环那里,当l(是字母L的小写)可以取2及其以上的数时,运行结果都和上面是一样的(都是对的),但是当l<=1时,结果就是错的,这我能够接受,问题在于,当l<=2时,它的结果不应该是对的,即使l<=5也不应该是对的,给我感觉就像是tmp数组前三个元素被赋值为'\0',后面的所有元素都丢失了,这是怎么回事?