我無法獲得正確的輸出,我想知道我的錯誤在哪里。可能倒數回圈有錯誤。我整個代碼的主要問題是,它只輸出標記而不輸出詞匯。而且程式必須在放置這三個標點時自動結束并顯示輸出。像這樣的輸出:
輸入:
my name is jake.//放入時終止。并自動顯示輸??出
輸出:
jake is name my.
這是我的第一個回圈的程式片段:
#include <stdio.h>
#define N 70
int main (void) {
char array[N] = { 0 };
char* p;
char mark = 0;
int c;
p = array;
scanf ("%d", &c);
while ( (c = getchar()) != '\n') {
if (p < array N) {
if (c == '.' || c == '!' || c == '?')
mark = c;
if (c == ' ') {
*p = '\0';
*p ;
} else
*p = c;
}
}
*p = '\0';
while (--p > array) {
if (p[1])
printf ("%s", p 1);
}
printf ("%s", array);
if (mark)
printf ("%c", mark);
}
uj5u.com熱心網友回復:
您的代碼幾乎沒有修改:
#include <stdio.h>
#define N 70
int main (void) {
char array[N] = { 0 };
char* p;
char mark = 0;
int c;
p = array;
//scanf ("%d", &c); //serves no purpose : are you reading sentence length here?
while ( (c = getchar()) != '\n') {
if (p < array N) {
if (c == '.' || c == '!' || c == '?') {
mark = c;
*p = '\0';
break; // stop reading input
} else if (c == ' ') {
*p = '\0';
} else
*p = c;
}
}
*p = '\0';
while (--p > array) {
if ('\0' == *p && '\0' != *(p 1))
printf ("%s ", p 1);
}
printf ("%s", array);
if (mark)
printf ("%c", mark);
return 0;
}
有一種更好的方法,但它會利用字串庫函式。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/441810.html
標籤:C
