我的程序假設要採用字符串並在一行中打印每一行。我正在尋找空間來決定何時將一個字打印到一個新行。我使用一個名爲hold的字符串來存儲每個字母,直到找到一個空格。那個單詞然後被打印到屏幕上。我遇到的問題是,如果最後一個詞處於保留狀態比前一個詞更長,那麼新詞將與最後一個詞的尾部一起打印。我似乎無法清除我用來暫時保存文本塊的字符串
示例:如果最後一個單詞是「Program」,並且下一個單詞是「cat」,則屏幕的輸出將是Program,然後是catgram。
下面是我的代碼:
#include<stdio.h>
#include<string.h>
char *string;
char *hold;
int main(void)
{
string = malloc(200);
hold = malloc(50);
int i=0;
int j=0;
printf("please enter a string\n");
scanf("%[^\n]",string);
while (string[i] !='\o')
{
if (string[i] !=' ')
{
hold[j] = string[i];
j++;
}
else
{
printf("%s\n",hold);
j = 0;
}
i++;
}
return 0;
free(string);
}
恐怕你拼錯'\ 0'爲'\ O'。編輯:哦,你也永遠不會終止字符串'hold'。 –
看到您的問題如何解決,您可以接受其中一個答案嗎? –
發佈的代碼不會乾淨地編譯。它缺少以下語句:'#include',以便在執行'return 0;'語句時正確地爲'free()'和'malloc()' –
user3629249