[英]How to check my char string for spaces?
我想取一個字符串並輸出它沒有空格。 我編寫了下面的代碼,但我的if語句似乎沒有檢測到char字符串中的空格,或者我沒有這樣做。
我認為我的問題出在我的if語句中,但我不知道如何修復它。
int main (void)
{
char s[50];
printf("Enter string:");
fgets(s,50,stdin);
for( int i = 0; i < strlen(s); i++ ){
if( &s[i] != " " ){
printf("%c\n", s[i]);
}
}
return 0;
}
輸出:
Enter string:xales was here
x
a
l
e
s
w
a
s
h
e
r
e
需要注意的重要一點是雙引號字符實際上是字符串,而不是字符類型。 該值將內存地址保存到程序內存中的某個位置(不是堆棧中的值),該位置恰好是2個字節長(一個用於空間,一個用於\\0
)。 所以這就是#1:改變"
to '
,你將在堆棧中有一個char來按值進行比較。
第二個是通過在那里使用&
符號,你試圖比較字符串中第i
個索引的地址,而不是那里的值。 只需刪除&
。
是的,你是對的。 你的if條件總是如此,因此,你將最終按原樣打印整個字符串。
你的if條件: if( &s[i] != ' ' ) print s [i];
這里“&”代表地址。 所以在你的if塊你正在檢查的是:
` if(addressof( s[i] != ' ') print s[i]; `
現在地址永遠不是空格,因此你的if塊永遠都是真的。 但是,當你想要檢查沒有空格的s打印時,檢查值: if( s[i] != ' ' ) print s [i];
此外,當你比較charecter時,你應該明白,“”用於字符串,對於字符,你應該使用單引號''。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.