簡體   English   中英

為什么我從這段代碼中得到一串看似隨機的數字?

[英]Why do I get string of seemingly random number from this code?

#include <stdio.h>

#define LIM 1

int main(int argc, char const *argv[]) {
  int i;
  int c;
  char s[LIM];

  for (i=0; i < LIM-1 && (c=getchar()) != '\n' && c != EOF; ++i)
  {
    s[i] = c;
  }
  printf("%d\n", s);
  return 0;
}

輸出例如:1541348039 我期望它是 1。

printf("%d\\n",*s)printf("%d\\n",s[0])

現在您正在嘗試打印 s 的地址。 s 是一個包含一個字符的數組,因此您需要指向要打印的元素。

編輯:此外,您需要增加 LIM 的值,因為 for 內的條件始終為 false。

您的代碼有兩個問題。 第一個是您必須將代碼中的條件i < LIM-1更改為i < LIM ,否則循環將永遠不會運行,因為LIM-1等於 0 並且i永遠不會小於 0。

第二個問題是printf 如果你這樣做printf("%d\\n", s); 那么您要求 C 將s打印為整數。 在這種情況下,這將打印s的內存地址。 你想要的是

printf("%c\n", s[0]);

這將打印s的唯一字符。 請注意,您可能希望將s設為空終止字符串,在這種情況下,您可以使用以下命令打印所有內容(不僅僅是第一個字符):

printf("%s\n", s);

當然,使s成為空終止字符串需要增加其大小,因為您需要一個額外的空字符。 此外,在這種情況下,您必須在循環中使用i < LIM-1條件為空字節留出空間。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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