Re: [問題] 不用if-else, for, while, do-while取絕
看板C_and_CPP (C/C++)作者ibmibmibm (BestSteve)時間10年前 (2016/04/11 23:41)推噓1(1推 0噓 4→)留言5則, 2人參與討論串5/5 (看更多)
原文恕刪
用setjmp/longjmp來模擬while loop
這裡有測試結果
http://ideone.com/PetGBe
以下是程式碼
#include <stdio.h>
#include <setjmp.h>
int abs(int value) {
jmp_buf buf;
char buffer[16];
snprintf(buffer, sizeof(buffer), "%d+", value);
char *cursor = buffer;
switch (setjmp(buf)) {
case 0:
++cursor;
longjmp(buf, *cursor);
case '-':
*cursor = ' ';
++cursor;
longjmp(buf, *cursor);
case '+':
*cursor = '\0';
sscanf(buffer, "%d", &value);
return value;
default:
++cursor;
longjmp(buf, *cursor);
}
}
int main(void) {
int value;
while (1 == scanf("%d", &value)) {
printf("%d\n", abs(value));
}
return 0;
}
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 125.227.147.112
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1460389303.A.EAA.html
→
04/12 02:55, , 1F
04/12 02:55, 1F
→
04/12 03:07, , 2F
04/12 03:07, 2F
→
04/12 03:08, , 3F
04/12 03:08, 3F
推
04/12 03:46, , 4F
04/12 03:46, 4F
→
04/12 03:47, , 5F
04/12 03:47, 5F
討論串 (同標題文章)
完整討論串 (本文為第 5 之 5 篇):
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章