我在與下面的代碼有問題:如果不被尊重的條件
/*
* Esercizio 5
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char* getProduct(char product[]);
long getNumber(char product[]);
int main(int argc, char** argv) {
char product1[60] = {0};
char product2[60] = {0};
char product3[60] = {0};
char productInput[60] = {0};
int flag = 0;
long cost = 0;
printf("Product 1: ");
gets(product1);
printf("Product 2: ");
gets(product2);
printf("Product 3: ");
gets(product3);
do {
printf("Product and quantity: ");
gets(productInput);
printf("productInput: %s\n", getProduct(productInput));
printf("product1: %s\n", getProduct(product1));
if(getProduct(product1) == getProduct(productInput)){ /* PROBLEM HERE!!! */
// No matter what i input it always goes here
printf("Selezionato prodotto 1");
cost = getNumber(product1) * getNumber(productInput);
flag = 1;
} else if(getProduct(product2) == getProduct(productInput)){
printf("Selezionato prodotto 1");
cost = getNumber(product2) * getNumber(productInput);
flag = 1;
} else if(getProduct(product3) == getProduct(productInput)){
printf("Selezionato prodotto 1");
cost = getNumber(product3) * getNumber(productInput);
flag = 1;
}
} while(!flag);
printf("Costo totale: %d", cost);
return (EXIT_SUCCESS);
}
char* getProduct(char product[]){
char *pointer;
char str_product[60] = {0};
strcpy(str_product, product);
pointer = strtok(str_product, " ");
return pointer;
}
long getNumber(char product[]){
char *pointer;
char str_product[60] = {0};
strcpy(str_product, product);
pointer = strtok(str_product, " ");
pointer = strtok(NULL, " ");
return strtol(pointer, NULL, 10);
}
正如你可以清楚地看到,getProduct(productInput)
和getProduct(product1)
返回指針爲不同的值。問題是,即使值不同,if
條件不受尊重。
好像你需要通過你的代碼(調試) – keyser
[at] Keyser這就是爲什麼我添加了兩個printf裏面的do-while循環 @Amadan我把整個代碼因爲在以顯示這些功能是如何工作的,並且我通過評論突出了問題的發生地點。 – siannone
@ShadowBroker:不,你不需要顯示那個。我們不需要知道「cost」,「flag」,「getNumber」或大部分「printf」語句。所有 - 噪音。我從未看過評論,因爲它也被埋在三頁代碼中。如果你在頂部說「相關行被標記在代碼中」,那麼它會有所幫助,但即使如此,你也不能讓你的代碼成爲一個簡單的例子。這次有些善良的人堅持不懈地幫助你;下次也許不會。簡潔但完整的問題獲得更好的答案機會。 – Amadan