【发布时间】:2022-06-19 22:03:06
【问题描述】:
编写一个 C 函数longestStrInAr(),它接受一个字符串数组 str 和 size (>0) 作为 参数,并通过 指针参数长度。如果两个或多个字符串具有相同的最长字符串长度,则 第一次出现的字符串将被返回给调用函数。例如,如果 size 为 5 并且 字符串数组是 {"peter","john","mary","jane","kenny"},那么最长的字符串是 "peter" 和 字符串长度为 5 将返回给调用函数
我在这里遇到分段错误,我不知道为什么
#include <stdio.h>
#include <string.h>
#define N 20
char *longestStrInAr(char str[N][40], int size, int *length);
int main()
{
int i, size, length;
char str[N][40], first[40], last[40], *p, *result;
char dummychar;
printf("Enter array size: \n");
scanf("%d", &size);
scanf("%c", &dummychar);
for (i=0; i<size; i++) {
printf("Enter string %d: \n", i+1);
fgets(str[i], 40, stdin);
if (p=strchr(str[i],'\n')) *p = '\0';
}
result = longestStrInAr(str, size, &length);
printf("longest: %s \nlength: %d\n", result, length);
return 0;
}
char *longestStrInAr(char str[N][40], int size, int *length)
{
char *p;
for (int i = 0; i < size; i++)
{
int j = 0; int max = 0, *length = 0;
while (str[i][j++] != '\0')
{
max++;
}
if(max > *length) {
*length = max;
p = str[i];
}
}
return p;
}
【问题讨论】:
-
当你在调试器下运行时,哪一行出错了'
标签: c