10진수를 16진수로

hippo7665 Reply 9 years 31 weeks ago
#include <stdio.h> #define MAXLINE 1000 int main() { int c, i, j, x, N; char firstline[MAXLINE], s[MAXLINE]; gets(firstline); N=0; x=0; for (i=0; firstline[i]!='\0'; i=i+1){ N=10*N+(firstline[i]-'0'); } for (j=0; j<N; j=j+1);{ gets(s); if (s[0]!='0'||(s[1]!='X'&&s[1]!='x')){ printf("null"); } else{ for (i=2; (s[i]>='0'&&s[i]<='9')||(s[i]>='A'&&s[i]<='F')||s[i]=='\0'; i=i+1){ if (s[i]>='0'&&s[i]<='9') x=16*x+(s[i]-'0'); else if (s[i]>='A'&&s[i]<='F') x=16*x+(s[i]-'A'+10); else printf("%d", x); } } } return 0; } 위 코드에서 2번쨰 for문에서 gets(s)가 N번 반복되지 않고 그냥 1번에 끝나버려요 ㅠㅠ 어떻게 하면 N번 반복하게 할 수 있나요?
pichulia Reply 9 years 31 weeks ago
gets로 읽은 문자열의 가장 뒤에 '\n'도 같이 딸려온다고 합니다..그래서 '\n'은 firstline[i] != '\0'의 조건문에 만족되서 N = 10*N + ('\n' - '0'); 이 계산이 되겠네요..ㅠㅠ N이 2같은 거라면 저 계산결과 N 값이 -18이 되어버릴겁니다..