为什么没有打印出运算符?

分割运算对象和运算法,但是运算法打印不出来是为什么?


int partition2(char* string, char* Str, int position)
{
    int i, j;
    i = position;
    if (string[i] != '\0')
    {
        j = 0;
        while (string[i] >='0'&&string[i]<='9' && (string[i] != '\0'))
        {
            Str[j] = string[i];
            ++i;
            ++j;
        }
        while ((string[i] == '+' || string[i] == '-' || string[i] == '*' || string[i] == '/')&&(string[i]!='\0'))
        {
            Str[j] = '\0';
            ++j;
            Str[j] = string[i];
            ++i;
            ++j;
        }
        return i;
    }
    else
        return -1;
}

void main()
{
    int choice;
    char string[50];
    char Str[20];
    int position=0;
    int k=0;
    printf("\t\t①英文句子分割        ②算术表达式分割\n请选择需要进行的操作:");
    scanf("%d", &choice);
    getchar();
    printf("Please input string(length<=50): ");
    gets_s(string);
    printf("\nPartition result: \n");
    if(choice==1)
        while ((position = partition1(string, Str, position)) != -1)
        {
            ++k;
            printf("Partition %d : %s\n", k, Str);
        }
    if(choice==2)
        while ((position = partition2(string, Str, position)) != -1)
        {
            ++k;
            printf("Partition %d : %s\n", k, Str);
        }
}

修改如下,供参考:

#include <stdio.h>
int partition2(char* string, char* Str, int position)
{
    int i, j;
    i = position;
    if (string[i] != '\0')
    {
        j = 0;
        if (string[i] >= '0' && string[i] <= '9') {   //修改
            while (string[i] >= '0' && string[i] <= '9' && (string[i] != '\0'))
            {
                Str[j] = string[i];
                ++i;
                ++j;
            }
        }
        else{ //修改
            while ((string[i] == '+' || string[i] == '-' || string[i] == '*' || string[i] == '/') && (string[i] != '\0'))
            {
                //Str[j] = '\0';   //修改
                //++j;             //修改
                Str[j] = string[i];
                ++i;
                ++j;
            }
        }
        Str[j] = '\0';    //修改
        return i;
    }
    else
        return -1;
}

void main()
{
    int choice;
    char string[50];
    char Str[20];
    int position = 0;
    int k = 0;
    printf("\t\t①英文句子分割        ②算术表达式分割\n请选择需要进行的操作:");
    scanf("%d", &choice);
    getchar();
    printf("Please input string(length<=50): ");
    gets_s(string);
    printf("\nPartition result: \n");
    if (choice == 1)
        while ((position = partition1(string, Str, position)) != -1)
        {
            ++k;
            printf("Partition %d : %s\n", k, Str);
        }
    if (choice == 2)
        while ((position = partition2(string, Str, position)) != -1)
        {
            ++k;
            printf("Partition %d : %s\n", k, Str);
        }
}

#include <stdio.h>
int partition2(char* string, char* Str, int position)
{
    int i, j;
    i = position;
    if (string[i] != '\0')
    {
        j = 0;
        if (string[i] >= '0' && string[i] <= '9') {   //修改
            while (string[i] >= '0' && string[i] <= '9' && (string[i] != '\0'))
                Str[j++] = string[i++];
        }
        else{ //修改
            while ((string[i] == '+' || string[i] == '-' || string[i] == '*' || string[i] == '/') && (string[i] != '\0'))
                Str[j++] = string[i++];
        }
        Str[j] = '\0';   //修改
        return i;
    }
    else
        return -1;
}

因为爱情