[英]C - Using scanf on a string to get in a number
我會盡量簡短地解決我的問題。 雖然,我是初學程序員,所以我真的很抱歉我的愚蠢問題。
我有一個字符串。 我想使用scanf為這個字符串賦值。 這個值甚至可以是一個數字(但我也希望這個數字作為一個字符)。
所以我做了這個代碼:
char string[20];
scanf("%s", string);
//LETS ASSUME WE ONLY WRITE THE NUMBER 1 IN THE STRING
if(string=='1')
printf("You have entered a single number: 1");
// IF I WOULD RUN THIS PROGRAM THE PRINTF PART WOULD NOT HAPPEN. WHY?
這個代碼當然只是一個例子。 在我的程序中,我會用IF做一個不同於簡單printf的東西。
雖然,使用此代碼,如果我將字符串1作為值,然后按回車鍵,我在IF中寫的東西不會因某種原因發生。
任何人都可以給我一個解釋,我應該怎么做才能使它工作? 那我該怎么寫IF部分呢?
使用(小心單引號表示char
值而不是字符串文字)
#include <string.h>
...
if (strcmp(string, "1") == 0) /* if it returns 0, the string contents are the same for both strings */
...
因為C沒有直接支持進行字符串比較,而你實際上是在比較兩個指針(即使它們存儲了相同的值,它也不會是與字符串文字"1"
相同的指針,並且string
變量位於在你的計算機內存的不同地方。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.