簡體   English   中英

如何檢查我的char字符串空格?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM