2014-03-13 36 views
3

我是0123,的新手。我創建了一個程序輸入的字母,並最終顯示在輸入字母..但它顯示的永遠只有最後的字母..請幫助..我知道它很簡單的問題,但我初學者,請幫助傢伙..如何在c中顯示輸入的字母?

#include<stdio.h>  
    int main() 
    { 
     char z; 
     int a; 
      printf("enter the no."); 
      scanf("%d",&a); 
      printf("the entered no. is:%d\n",a); 
      int i; 
      for(i=0;i<a;i++) 
      { 
       printf("enter the letters:"); 
       scanf("%s",&z); 
      } 
      printf("the entered letters are:"); 
      for(i=0;i<a;i++) 
      { 
       printf("%s\n",&z); 
      } 
      return 0; 

    } 
+0

三江源艾西瓦婭KARTHIK! –

回答

2

問題:

  1. 您應該使用%c(字符),而不是%s(字符串)。

  2. 使用字符數組來存儲多個字符。閱讀有關陣列here

  3. 刪除&printf()在第二個for循環。

試試這個:

int main() 
{ 
    char z[10]; //can hold 10 characters like z[0],z[1],z[2],.. 
    int a; 
    printf("enter the no."); 
    scanf("%d",&a); 
    printf("the entered no. is:%d\n",a); 
    int i; 
    for(i=0;i<a;i++) 
    { 
     printf("enter the letters:"); 
     scanf("%c",&z[i]); 
    } 
    printf("the entered letters are:"); 
    for(i=0;i<a;i++) 
    { 
     printf("%c\n",z[i]); 
    } 
    return 0; 
} 
+0

感謝兄弟,但我想只打印輸入的字母..它顯示像三角形所有字母 –

+0

該陣列最多隻能容納10個字符。如果您想要更多,請更改數組大小。 '它顯示所有的字母像三角形?我沒有明白。 –

+0

如果我輸入的字母像bc d e f g h那麼我的輸出就像abcdefghi abcdefgh abcdefg abcdef abcde同樣也是一行一行。 –

2

信件使用%c進行掃描。而掃描多個字母,你可以使用char陣列:char z[10];

你正在嘗試做可以做到這樣:

 char z[10]; // Take some max size array 
     ... 
     for(i=0;i<a;i++) 
     { 
      printf("enter the letters:"); 
      scanf("%c",&z[i]); // Scan the letters on each array position. 
     } 
     printf("the entered letters are:"); 
     for(i=0;i<a;i++) 
     { 
      printf("%c\n",z[i]); //'printf' doesn't require address of arg as argument hence no `&` required 
     } 

%s參數用於掃描的chars的字符串。

chars陣列的chars之間的差。 C中的chars的字符串需要用ASCII字符0來終止,表示爲\0,格式爲char格式,而char數組只是字母集合,不需要用\0來終止。當您嘗試對字符串進行一些操作,比如printfstrcpystrlen,等等。這些功能對字符串的空字符終止物業工作

的差異變得更爲重要。

例如:strlen統計字符串中的字符,直到找到\0,找出字符串的長度。同樣,printf將字符逐字符打印,直到找到\0字符。

UPDATE:

忘了提,scanf是不是一個好的選擇輸入char格式。改爲使用fgetc,使用stdin作爲輸入FILE流。

+0

請編輯我的代碼兄,直到我沒有任何溶劑 –

+0

更新我的回答 –

1
#include <stdio.h>  

int main() 
{ 
    char *z; 
    int a; 
    printf("enter the no."); 
    scanf("%d",&a); 
    z = (char *) malloc(a); 
    printf("the entered no. is:%d\n",a); 
    int i; 
    for(i=0;i<a;i++) 
    { 
     printf("enter the letters:"); 
     scanf("%c",z+i); 
    } 
    printf("the entered letters are:"); 
    for(i=0;i<a;i++) 
    { 
     printf("%c\n",z); 
    } 
    return 0; 
} 
+0

請編輯我的代碼兄,直到我沒有任何溶劑 –

2

char z是隻有一個字符的佔位符。並且您已經結束了在for循環中設置了z。要接收更多字符,請使用其他人提到的char array

或打印在同一個循環,你的人物要掃描他們:

#include<stdio.h>  
int main() 
{ 
    char z; 
    int a; 
    printf("enter the no."); 
    scanf("%d",&a); 
    printf("the entered no. is:%d\n",a); 
    int i; 
    for(i=0;i<a;i++) 
    { 
     printf("enter the letters:"); 
     scanf("%s",&z); 
     printf("letter scanned:%c\n", z); 
    } 
    return 0; 
} 
+0

請編輯我的代碼兄,直到我沒有任何溶劑 –

+0

@ R.A:我編輯了我的代碼,複製粘貼到您的編輯器並嘗試它。 – brokenfoot

+0

朋友它不正確..我會解釋清楚我想要什麼..如果我gv輸入爲4之後,4通過循環,並要求輸入4個字母..後,我進入了四個字母..它將顯示新行..但你的代碼是如果我gv,它顯示在一次..但我不想要那個朋友..你能理解我的話嗎? –

2

請看this關於scanf的更多細節。您已給scanf("%s",&z);%s用於讀取字符串(字符數組除外),並以null char結尾。所以如果你把這個內部循環,你不會得到期望的結果。如果你想一次只讀一個字符,使用%c這裏c爲Character。

for(i=0;i<a;i++) 
{ 
      printf("enter the letters:"); 
      scanf("%c",z+i); 
} 
1
在你的代碼

第一個錯誤是你必須使用「%S」,而不是「%C」。第二是它是不可能多個值存儲在一個變量中,這樣,而不是使用變量使用arrays.third是你已經告訴用戶輸入他/她想要輸入的你不知道的字符數。他們可以輸入1也可以輸入100000,所以數組中的成員數量沒有被定義。更好的是使用特定的數字數組中的字符。

0

我終於得到了答案,謝謝你的幫助計算器傢伙根本岩石...

#include<stdio.h> 
#include<malloc.h> 
int main() 
{ 
     int a; 
     char *z=(char *)malloc(sizeof(a)); 
     printf("enter the no."); 
     scanf("%d",&a); 
     printf("the entered no. is:%d\n",a); 
     int i; 
     for(i=0;i<a;i++) 
     { 
      printf("enter the letters:"); 
      scanf("%s",&z[i]); 
     } 
     printf("the entered letters are:\n"); 
     for(i=0;i<a;i++) 
     {     
      printf("%c\n",z[i]); 
     } 
     return 0; 

} 
相關問題