如何将字符串分成两部分?

问题描述 投票:1回答:1

我需要编写一个程序,用户在三个单独的字符串上输入3个项目及其相对价格。然后我必须检查最后一项和价格是否与其他两项中的一项相同。如果是这种情况,我必须打印项目和总价格(该项目的价格乘以2)。

问题是,当我调用一个函数来从价格中划分项目的名称时(理想情况下我将它们保存为两个单独的字符串,然后将价格的浮点字符串转换为普通的浮点变量),但它没有不行。

这是功能

void f(char v[], char product[], char price[]){

int i=0, a=0, inword=0, z=0;

while (!z) {
    if(isalpha(v[i])&&inword)
        product[i]=v[i];
    if (isalpha(v[i])&&!inword) {
        inword++;
        product[i]=v[i];
    }
    if (isspace(v[i])&&inword) {
        inword=0;
        a=1;
    }
    if ((isdigit(v[i])||v[i]=='.')&&a) {
        price[i]=v[i];
    }
    if (a&&v[i]=='\n')
        z=1;
    i++;
}
puts(product);
puts(price);

}

我确保它在主要和主要之前正确定义。输入字符串应该是这样的:Apple 4.99\n因此我首先搜索一个字母,如果我找到一个我开始在字符串产品中保存单词,然后一找到空格我就从“inword”退出并且我搜索一个数字(价格没有€£或$)。

理想情况下,两个字符串的结果将是:

product = Apple price = 4.99

但是,如果我试着打印价格,那就空了......你能帮助我吗?

问题是如何在字符串中搜索£$€?如果我写'€',它会给我一个错误的标志......谢谢你的帮助

c string
1个回答
1
投票

你可以这样做

void f(char v[], char product[], char price[]){
    char * p = v;
    while (!isdigit(p[0]))
        p++;

    memcpy(product, v, p-v);
    product[p-v]='\0';
    strcpy(price, p);
}
© www.soinside.com 2019 - 2024. All rights reserved.