C 表从第1行开始,而不是从第0行开始
函数搜索表中最长/最短的字符串。我可以编码和读取它,但只要我输入函数C 表从第1行开始,而不是从第0行开始,c,C,函数搜索表中最长/最短的字符串。我可以编码和读取它,但只要我输入函数void minmax(char*ptab,char**pva,int n)它就会跳到第1行而不是第0行。因此,第一行[0]永远不会被读取 #include <stdio.h> #include <stdlib.h> #include <string.h> int encodage(char [][50]); void affichage(char [][50],int); void min
void minmax(char*ptab,char**pva,int n)
它就会跳到第1行而不是第0行。因此,第一行[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;
}
}
#包括
#包括
#包括
整数编码(字符[][50]);
无效附加(字符[][50],整数);
void minmax(字符*,字符**,整数);
int main()
{
字符标签[50][50];
char*va[2];
int n;
n=编码(制表符);
附页(页签,n);
最小值(&tab[0][50],va,n-1);
printf(“\n测试\n”);
看跌期权(*va);
fflush(stdin);
看跌期权(*(va+1));
返回0;
}
//编码并阅读带有编码和附件的表格。
空隙最小值(字符*ptab,字符**pva,整数n)
{
int i;
*pva=ptab;
*(pva+1)=ptab;
ptab=ptab+50;
对于(i=1;istrlen(*(pva+1)))
{
*(pva+1)=ptab;
}
其他的
{
if(strlen(ptab)tab[0][50]表示在tab[0]中有索引50的元素,而不是tab[0]本身。除此之外,索引50超出了范围。如果您想打印字符串,请使用printf(“%s”,…);
请注意,fflush(stdin)
是未定义的行为。它仍然向我发出警告:第19行:警告:从不兼容的指针类型[默认启用]传递'minmax'的参数1第6行:注意:应为'char*',但参数类型为'char()[50]'
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;
}
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
}
}
}