我需要编写一个程序,用户在三个单独的字符串上输入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
但是,如果我试着打印价格,那就空了......你能帮助我吗?
问题是如何在字符串中搜索£$€?如果我写'€',它会给我一个错误的标志......谢谢你的帮助
你可以这样做
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);
}