我需要编写一个程序,用户在三个单独的字符串上输入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
但如果我试图打印它的价格就是空的...... 你能救我吗?
方面的问题是如何在字符串中搜索£$€?如果我写'€',它会给我一个错误的信号...... 谢谢你的帮助
答案 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);
}