题目要求:输入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;
}