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

时间:2017-12-17 18:27:28

标签: c string

我需要编写一个程序,用户在三个单独的字符串上输入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

但如果我试图打印它的价格就是空的...... 你能救我吗?

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

1 个答案:

答案 0 :(得分: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);
}