鱼C论坛

 找回密码
 立即注册
123
返回列表 发新帖
楼主: 小甲鱼

[知识点备忘] S1E26:指向指针的指针

[复制链接]
发表于 2024-12-30 21:37:42 | 显示全部楼层
虽然做出来了但实现顺序搞反了,哈哈,下面是我写的
#include<stdio.h>
#define MAX 1024

int main()
{
        char original[MAX], ch, bv;
        int i = 0, j = 0, k, m[MAX] = {0}, n = 1, v, temp = 0;
        printf("请输入分割符:");
        scanf("%c", &bv);
        getchar();
        printf("请输入一个英文句子:");
        while(1){
                ch = getchar();
                if(ch == bv || ch == '\n'){
                        if(i != j){
                                j = i;
                                m[n++] = j;
                        }
                        if(ch == '\n'){
                                break;
                        }
                        continue;
                }
                original[i] = ch;
                i++;
       
        }
        n--;
        original[i] = '\0';
        for(k = 0; k < n; k++){
                temp = (m[k + 1] - m[k]) > temp ? (m[k + 1] - m[k]) : temp;
        }
        temp += 1;
        printf("分割结果已存放到result[%d][%d]的二维数组中...\n", n, temp);
        char result[n][temp];
        k = 0;
        for(i = 0; i < n; i++){
                for(v = 0, j = m[k]; j < m[k + 1]; j++){
                        result[i][v] = original[j];
                        v++;
                }
                result[i][v] = '\0';
                k++;
        }
        printf("现在依次打印每个单词:\n");
        for(i = 0; i < n; i++){
                printf("%s\n", &result[i][0]);
        }
        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-12-31 01:09:18 | 显示全部楼层
又迷路了 发表于 2024-12-30 21:37
虽然做出来了但实现顺序搞反了,哈哈,下面是我写的
#include
#define MAX 1024

换了个逻辑,这次对了
#include<stdio.h>
#define MAX 1024

int main()
{
        char original[MAX], ch;
        int i = 0, j = 0, k, n = 0, temp = 0;
        _Bool x = 0, y = 0;
        printf("请输入一个英文句子:");

        while((original[i] = getchar()) != '\n'){
                i++;
        }
        original[i] = '\0';
        printf("请输入分隔符:");
        scanf("%c", &ch);
        getchar();
        i = 0;
        while(original[i] == ch){
                i++;
        }
        while(original[i] != '\0'){
                if(original[i] != ch){
                        j++;
                        x = 1;
                }
                if(original[i] == ch || original[i + 1] == '\0'){
                        temp = j > temp ? j : temp;
                        j = 0;
                        y = 1;
                }
                if(x && y){
                       
                        n += 1;
                        x = 0;
                        y = 0;
                       
                }
                i++;
        }
        temp++;
        printf("分割结果已存放到result[%d][%d]的二维数组中...\n", n, temp);
        char result[n][temp];
        k = 0;
        for(i = 0; i < n; i++){
                for(j = 0; j < temp; j++){
                        if(original[k] == ch){
                                while(original[k] == ch){
                                        k++;
                                }
                                break;
                        }
                        result[i][j] = original[k];
                        k++;
                }
                result[i][j] = '\0';
        }
        printf("现在依次打印每个单词:\n");
        for(i = 0; i < n; i++){
                printf("%s\n", &result[i]);
        }
        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-11 14:15

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表