我聲明一個空字符串:相同C代碼的行爲不同
char str[MAX_LEN] = "\0"; //empty String
然後
void InitString(char *str,int maxlenght)
{
char input = 0;
int counter = 0,i;
for(i = 0;i<(maxlenght);i++)
{
*(str+i) = '\0';
}
getchar();
printf("\nEnter new string of max %d chars: ",maxlenght);
while (input != '\r' && counter < (maxlenght-1))
{
input = getche();
*(str+counter) = input;
counter++;
}
}
void PrintString(char *str)
{
int i = 0;
printf("\nThe String Created is : ");
puts(str);
while(*(str+i) != '\0')
{
printf("%c", *(str+i));
i++;
}
}
我不知道爲什麼這樣的代碼具有不同因爲代碼是相同的邏輯到上一個。
int CountWords(char *str)
{
int i = 0;
char ch;
while(*(str+i) != '\0')
{
printf("%d", *(str+i));
ch = *(str+i);
printf("%c",ch);
numNumber++;
i++;
}
return i;
}
即使測試條件相同,低位代碼塊也沒有輸出。
我個人推薦使用str [i]!='\ 0'代替*(str + i)!='\ 0',因爲在我看來,當你對某些代碼有疑問時,它會更清晰地閱讀 – Archmede
不起作用,發佈簡短,乾淨編譯的代碼,仍然存在問題。由於這是運行時問題,請發佈實際輸入,並在實際輸出後張貼預期輸出。 – user3629249
函數:'getche()'是非標準C語言,爲什麼在getchar()可用時使用它?一般來說,檢查'\ n'是否在行尾(除非你有一些'特殊'的通信實際上通過了'\ r')。在第二個代碼中,snippit是什麼變量:'numNumber'?它有什麼如何解決這個問題?哦,順便說一句:這是什麼問題? – user3629249