gpt4 book ai didi

c - 表从第 1 行开始,而不是从第 0 行开始

转载 作者:行者123 更新时间:2023-11-30 19:40:51 25 4
gpt4 key购买 nike

该函数搜索表中最长/最短的字符串。我可以编码并阅读它,但是一旦我输入函数 void minmax(char *ptab, char **pva, int n)它跳转到第 1 行而不是第 0 行。因此,第一个 line[0]从未被阅读过。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int encodage(char [][50]);
void affichage(char [][50],int);
void minmax (char *,char **,int);

int main()
{
char tab[50][50];
char *va[2];
int n;
n=encodage(tab);
affichage(tab,n);
minmax(&tab[0][50],va,n-1);
printf("\nTest\n");
puts(*va);
fflush(stdin);
puts(*(va+1));
return 0;
}

//Code and Read the table with the encodage and affichage.

void minmax(char *ptab,char **pva,int n)
{
int i;
*pva=ptab;
*(pva+1)=ptab;
ptab=ptab+50;
for(i=1;i<n-1;i++)
{
if(strlen(ptab)>strlen(*(pva+1)))
{
*(pva+1)=ptab;
}
else
{
if(strlen(ptab)<strlen(*(pva)))
{
*(pva)=ptab;
}
}
ptab=ptab+50;
}
}

最佳答案

tab[0][50] 表示 tab[0] 中索引为 50 的元素,而不是 tab[0] 本身。除此之外,索引 50 超出范围。如果您想打印字符串,请使用 printf("%s", ... );

void minmax (char[][50] ,char **,int);

int main()
{
char tab[50][50];
char *va[2];
int n = encodage( tab );
affichage( tab, n );
minmax( tab, va, n ); // <-
printf( "short %s\n", va[0] );
printf( "long %s\n", va[1] );
return 0;
}

如果您想查找最短和最长的字符串,请按以下步骤操作:

你的第一个参数是一个指向字符串表的指针。第二个是指向两个结果字符串的指针,第三个是表中字符串的数量(不是 n-1 或其他内容)。

void minmax(char ptab[][50], char **pva, int n )
// ^^^^^^
{
int i, len0, len1, len;
pva[0]=ptab[0]; // init shortest string with pointer to first string in table
pva[1]=ptab[0]; // init longest string with pointer to first string in
len0 = strlen( pva[0] ); // remember lenght of shortest string
len1 = len0; // remember lenght of longest string
for(i=1;i<n;i++) // iterate from secend string up to last string (1..49 in your case)
{
len = strlen( ptab[i] ); // get length of string with index i
if( len > len1 ) // if lenght is greater than lenght of longest string, then this is longest string
{
len1 = len; // remember new maximum lenght
pva[1]=ptab[i]; // remember new maximum string
}
else if( len < len0 ) // if lenght is less than lenght of shortest string, then this is shortest string
{
len0 = len; // remember new minimum length
pva[0]=ptab[i]; // remember new minimum string
}
}
}

关于c - 表从第 1 行开始,而不是从第 0 行开始,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34611196/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com