Board logo

主題: [資訊電機] [問題]c++一次輸入很多個字元的問題 [打印本頁]

發表人: 老江    時間: 2005-5-4 09:52 PM     主題: [問題]c++一次輸入很多個字元的問題

原碼
#include<stdio.h>
void shift(char *v,char *w,char *x,char *y,char *z);
int main(void)
{
    char a,b,c,d,e;
    printf("請輸入五個字元>");
    scanf("%c %c %c %c %c",&a, &b, &c, &d, &e);
    shift(&a, &b, &c, &d, &e);
    printf("%c%c%c%c%c\n",a,b,c,d,e);

    return 0;
}
void shift(char *v,char *w,char *x,char *y,char *z)
{
     char t1;
     t1=*v;
     *v=*w;
     *w=*x;
     *x=*y;
     *y=*z;
     *z=t1;
}

這個我是想要做出像輸入abcde輸出bcdea這樣
不過在輸入完之後按下enter程式就自己關掉了
於是我記取了上次的教訓
加上了迴圈看看
#include<stdio.h>
void shift(char *v,char *w,char *x,char *y,char *z);
int main(void)
{
    char a,b,c,d,e;
    while(2){
    printf("請輸入五個字元>");
    scanf("%c%c%c%c%c", &a, &b, &c, &d, &e);
    shift(&a, &b, &c, &d, &e);
    printf("%c%c%c%c%c\n",a,b,c,d,e);
}
    return 0;
}
void shift(char *v,char *w,char *x,char *y,char *z)
{
     char t1;
     t1=*v;
     *v=*w;
     *w=*x;
     *x=*y;
     *y=*z;
     *z=t1;
}
結果可以看到我要的
但是第二個迴圈開始又是亂七八糟
不過那是getchar的問題就算了
我想問的是為什麼我第一個程式會沒辦法做第二個printf出來就直接關掉了
發表人: Acute    時間: 2005-5-5 02:14 AM

你怎樣執行你的程式的? @_@
在Windows 底下...你如果執行command line 程式, 程式執行完, 該視窗會被關閉
你應該先開啟"命令列模式" 的視窗
然後才從該視窗內去執行你的程式
這樣子, 視窗就不會被關閉, 你就能看見你的程式的執行結果

Acute.
發表人: 老江    時間: 2005-5-5 07:06 PM



我都編譯完之後
直接點那個執行來看
發表人: Acute    時間: 2005-5-6 02:34 AM

不行哩... 理論上... 他是呼叫外部執行... 跟你從XP 直接執行一個DOS 程式意思一樣
你必須進入命令列模式後, 才去執行那個程式才行

Acute.
發表人: deeping    時間: 2005-5-6 11:37 AM


引用:
老江寫到:


我都編譯完之後
直接點那個執行來看


試看看最後加個
    system("PAUSE");
   return EXIT_SUCCESS;
應該就會在dos窗下顯示後停止了^_^
發表人: DK    時間: 2005-5-6 06:25 PM

印象中直接在return 0前面加system("PAUSE");就可避免執行完直接關掉.
不過標頭檔應該要加

CODE:
[Copy to clipboard]
#include <stdlib.h>

發表人: 老江    時間: 2005-5-6 07:57 PM


引用:
DK寫到:
印象中直接在return 0前面加system("PAUSE");就可避免執行完直接關掉.
不過標頭檔應該要加

CODE:
[Copy to clipboard]
#include <stdlib.h>

那個我有加
不過因為copy太順
論壇把< 跟>看成是html語法所以就沒出現
發表人: etsos    時間: 2005-9-30 01:51 AM

在最後面加入getch();




歡迎光臨 TWed2k (http://twed2k.org/) Powered by Discuz! 4.1.0