这个程序是为了进行n个字符串的排序,但第一个出错,是怎么回事?

#include<stdio.h>
#include<string.h>
int main()
{
	char str[100][100];
	int i,j,n;
	char *temp=str[0];
	
	scanf("%d",&n);
	for(i=0;i<n;i++)
	{
		scanf("%s",str[i]);
	}
    for(i=0;i<n-1;i++)
	{
		for(j=i+1;j<n;j++)
		{
			if(strcmp(str[j],str[i])<0)
			{
				strcpy(temp,str[i]);
				strcpy(str[i],str[j]);
				strcpy(str[j],temp);

			}
		}
	}
     	for(i=0;i<n;i++)
	{
		printf("%s ",str[i]);
	}
		return 0;
    
}

 

因为temp指针初始化指向了str[0],所以str[0]被当作字符串交换时的容器了,既然temp是作str[][100]的交换容器,可以把temp初始化改成char temp[100];