能帮我看一下 下面的代码怎么把把字符串存入二维数组里

找出一串字符串的单词,存在二维数组中,并求其中最长的一个。
字符串在main函数中输入。长单词在main函数中输出。

img

代码修改如下,将字符串存入二维数组s2中,并在主函数中输出各个字符串以及最长字符串:

#include<stdio.h>
int longest(char s[], char t[],char temp[][30])
{
    //定义临时字符数组用于存放单词
    int len, i = 0, j = 0,k=0,count,flag=0,num;
    len = strlen(s);
    //1en用于计算数组长度
    for (i = 0; i < len; i++)
    {
        j = 0;
        count = 0;
        for (; s[i] >= 'a' && s[i] <= 'z' || s[i] >= 'A' && s[i] <= 'Z'; i++, j++)
        {
            temp[k][j] = s[i];                //将 每个单词临时储存在templ1中
            count++;                     //每个单词计算有几个字母
        }
        if (count > flag)               //flag为最大单词长度
        {
            flag = count; 
            num = k;                    //num记录最大单词在二维数组中的位置
        }
        temp[k][j] = '\0';
        k++;
    }
    strcpy(t, temp[num]);
    return k - 1;
}

int main()
{
    char s[100], word[30], s2[30][30]; //s接受输入字符串,word装最长单词,s2将单词存储在二维数组
    int n;  //单词个数
    printf("请输入一行字符: ");
    gets(s);//读入字符串到s
    n=longest(s, word,s2);//调用函数,传字符串s和空字符数组word
    for (int i = 0; i < n; i++)
    {
        printf("第%d个单词是: ",i);
        puts(s2[i]);
    }
    printf("最长的单词是: ");
    puts(word);
}



实例输入输出:

img

代码发一下,给你改改
试试这样,main里改成下面的这样

#include<stdio.h>

int main()
{
    char s[100][100],word[30];
    int n;
    printf("输入n:");
    scanf("%d",&n);
    printf("输入n行字符串\n");
    getchar();
    int i;
    for(i=0; i<n; i++)
    {
        gets(s[i]);
        longest(s[i],word);
        printf("最长单词:");
        puts(word);
    }
    return 0;
}

你是要解释这段代码嘛?我给你解释一下这段代码的逻辑吧,首先他定义了一个数组进行存取字符,在for循环中,如果字符是英文字符,就进入数组,遇到空格就跳出循环,然后利用格式符分段,表示了一个单词,然后一直循环下去,就可以得到所有的单词,然后进行对比,就可以了

没有用二维数组,单词用26个英文大小写之外的字符分割

memcpy或 strncpy将 string的字节复制到 array[0]