C语言字符串数组指针

题目:用scanf()输入一些字符串,然后输出最长的字符串。
编写的这个程序,当最长字符串不在第一位时,输出的只能是最后输入的一个字符串,到底哪里错了,求解。


```c
#include<stdio.h>
#include<string.h>
int main()
{
    char s1[10],s2[10],*p;
    int n,i=0,j;
    printf("Enter n:");
    scanf("%d",&n);
    printf("Enter %d strings:",n);
    scanf("%s",&s1);
    p=s1;
    for(j=0;j<n-1;j++)
    {
        scanf("%s",&s2);
        if(strlen(s2)>strlen(s1))
        p=s2;
    }
    printf("%s",p);
    return 0;
}

```

img

修改如下,供参考:

#include<stdio.h>
#include<string.h>
int main()
{
    char s1[10], s2[10], * p;
    int n, i = 0, j;
    printf("Enter n:");
    scanf("%d", &n);
    printf("Enter %d strings:\n", n);
    while (n--)
    {    
        scanf("%s", s1);
        j = strlen(s1);
        if (j > i){
            i = j;
            strcpy(s2, s1);
        }
    }
    printf("%s", s2);
    return 0;
}