簡體   English   中英

如何打印輸入字符?

[英]How I print the input character?

嘿,我是編程初學者,我需要幫助來解決這個問題我想輸入一些字符並打印它..

#include<stdio.h>
int main()
{
 char a[50];
 printf("Enter character...");
 scanf("%s",&a[50]);
 printf("You entered is %s",a[50]);
 return 0;
}

從上面的代碼我沒有得到任何 output 我也嘗試使用循環但沒有得到任何結果請幫助我什么是正確的程序,這樣如果我輸入任何字符串,我會在屏幕上打印?

所以這是你的問題。

您正在定義一個長度為 50 的char類型的數組。然后您從標准輸入中讀取一個字符串,然后將其存儲在第 50 個元素的地址處。 所以會發生什么是你存儲字符串“越界”,你可能會崩潰,也可能不會。

不管怎樣,一些非常糟糕的事情正在發生。 您正在將數據寫入不應該寫入的 memory 區域。

因此,您要做的就是將該數據寫入數組的第 0 個索引的地址。

您可以通過使用&a[0]來做到這一點,或者為了簡單起見: a 兩者的意思是一樣的。

歸根結底,您想要的是:

#include<stdio.h>
int main()
{
 char a[50];
 printf("Enter character...");
 scanf("%s",a);
 printf("You entered is %s",a);
 return 0;
}

我了解您是初學者並且正在學習基本概念,但請記住,此代碼非常不安全。 因為如果有人輸入了超過 50 個字符的長度,那么你又回到了原來的狀態。

引用kaylum的評論, “在繼續之前,通過基本的 C 書籍或教程對 go 有益。”

現在關於您的問題,請更改以下幾行:

scanf("%s",&a[50]);
printf("You entered is %s",a[50]);

scanf("%50s", a);
printf("You entered \"%s\".\n", a);

如果您只想打印用戶輸入的內容,則可以使用buffer

#include <stdio.h>
int main(void)
{
  char c;
  printf("Enter the string(~ to exit)\n");
  while((c = getchar()) != '~')
   putchar(c);
  return 0;
}

Output:

Enter the string(~ to exit)
This is a test program // press enter
This is a test program // same output
~ // exit

暫無
暫無

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

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