2017-01-10 71 views
0
#include <stdio.h> 
#include <conio.h> 

#define MAX 25 
char welcomeMsg[]="Please enter your name without * or #"; 
char errorMsg[]="Error, please try again"; 
void main(void) 
{ 
    int j; 
    char name[MAX],input; 
    j=0; 
    printf("%s\n", welcomeMsg); 

do 
{ 
gets_s(name,24); 
if(name[j]=='#'|| name[j]=='*') 
{ 
    printf("%s\n", errorMsg); 
    j=0; 
    continue; 
} 
name[j]=name[j]+j; 

j++; 

}while(name[j]<25&&name[j]!='\n'); 

name[j]=0;NULL; 

puts("\nYour Name is"); 
printf("%s",name); 
} 

不知道程序運行時,僅顯示字符串的第一個chracter :( 這是我第一次做琴絃,我很新的。?C++,所以我迫切需要的是什麼其實是錯誤的幫助,爲什麼不是我的字符串顯示作爲一個整體,只有1個字符顯示我不知道爲什麼我的字符串只顯示字符串的第一個字符

+1

如果你盯着這一段時間(雙關語意圖):'while(name [j] <25 && name [j]!='\ n')',它應該只花你幾分鐘的時間來找出答案。如果沒有,現在是您瞭解如何使用調試器的絕佳機會。 –

+8

如果這是C++,那麼你應該**立即放棄**你用來學習的參考資料,並切換到[更好的](http://stackoverflow.com/questions/388242/the-definitive-c -book-guide-and-list)儘快。 – WhiZTiM

回答

4

問題是這樣的表達你的循環狀態:​​

在第一次迭代時,您將比較name[1]25。假設the ASCII alphabet ,除非該字符是控制字符,否則循環將結束,並且您將終止符設置爲name[1]

您可能需要的條件是j < 25。您應該也可以添加一個字符串終止符的檢查。

這應該是非常如果你只是使用調試器,並通過代碼步驟明顯。下次請先做。

相關問題