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