要怎样才能输入a;b;c然后分别输出a;和b;和c;?

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void putstring(char* a)
{
    int len = strlen(a);
    for (int i = 0; i < len; i++)
    {
        printf("%c", a[i]);
    }
    return;
}

char* sq(char* a, int n)
{
    char* uu = (char*)malloc(sizeof(char) * (n + 1));
    int i=0;
    for (int i = 0; i < n; i++)
    {
        uu[i] = a[i];
    }
    uu[n - 1] = '\0';
    return uu;
}

int main(void)
{
    int i = 0, j = 0, k = 0;
    char* a[100];
    char b[100], sign[100];
    printf("请输入字符串:\n");
    gets_s(sign);
    while (sign[i] != '\0')
    {
        if (sign[i] == ';')
        {
            if (j == 0)
            {
                int m = i - j;
                memcpy(b, sign, m + 1);
                a[k] = sq(b, m + 2);
                j = i;
                i++;k++;
            }
            else
            {
                int m = i - j;
                memcpy(b, sign + j + 1, m + 1);
                a[k] = sq(b, m + 1);
                j = i;
                i++;k++;
            }
        }
        i++;
    }
    for (int i = 0; i < k; i++)
    {
        if (i == k - 1)
        {
            putstring(a[i]);
            printf("\n");
            continue;
        }
        puts(a[i]);
        printf("\n");
    }

    return 0;
}
 

代码里面没有看到数组C,A,B不是计算出来了吗?

sq方法中, uu[n - 1] = '\0';有问题吧,结束符应该给最后的位置。 修改为uu[n] = '\0';

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632