C语言数组指针的使用

题目要求:输入n个字符串,输出最长的字符串(要求使用指针)。

编写的这个程序,当输入的最长字符串不在第一位时,输出的结果只能是最后输入的一个字符串,到底哪里错了,求解。


 
```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;
}

你一直在用新输入的字符串 和S1比 也就是只要新字符串比S1大就*p存储, 你应该用最大的和新输入的比 字符串变值要用strcpy 否则到\0就自动截断

修改如下,供参考:

#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);   //scanf("%s", &s1);
    p = s1;
    for (j = 0; j < n - 1; j++)
    {
        scanf("%s", s2);   //scanf("%s", &s2);
        if (strlen(s2) > strlen(p))  //if (strlen(s2) > strlen(s1))
            strcpy(p, s2);//p = s2;
    }
    printf("%s", p);
    return 0;
}