<div>C언어로 문자열을 입력받아 그 문자열이 숫자인지? 문자인지? 혹은 둘 다인지를 구분하는 프로그램을 만들고 있습니다.</div> <div>제가 만들려고 하는 방식은 문자열의 첫글자가 문자인지, 숫자인지 확인을 한 후 그 뒤의 문자열들이 첫글자와 같은지를 확인해서 결과값을 나타내려고 합니다.</div> <div> </div> <div>아래는 제가 생각한 방식을 소스로 표현한 것입니다.</div> <div>보기 어렵더라도 양해 부탁드립니다.</div> <div>문제점은 hello 입력시 hello is String, 1234 입력시 1234 is Number, 123Hello 입력시 123Hello is Number+String으로 결과값이 정상 출력되지만</div> <div>12345hello 처럼 12345같이 4글자 정도 이상이 입력되면 12345hello is Number로 출력됩니다.</div> <div>바닥에 가까운 지식으로 왜 그런지 유추도해보고 수정도 해봤지만 답이 나오지 않아 도움 부탁드리고자 합니다.</div> <div>문제점을 알려주신다면 수정하기 위해 노력하겠지만, 혹 이 프로그램에 다른 적합한 방식이 있다면 아이디어를 주시면 감사하겠습니다.</div> <div> </div> <div>#include <stdio.h><br>#include <string.h><br><br>int check(char *text);<br>int check_num(char text);<br>int check_str(char text);<br><br>void main() {<br> char input[50];<br> int str=0;<br><br> scanf("%s", input);<br><br> //printf("%s\n", input);<br> str=check(input);<br> if(str==1) printf("%s is Number.\n", input);<br> else if(str==2) printf("%s is String.\n", input);<br> else printf("%s is Number+String\n", input);<br>}<br><br>int check(char *text) {<br> <br> int i, a[2];<br><br> for(i=0; i<sizeof(text)/sizeof(text[0]); i++) {<br> //for(i=0; i<strlen(text); i++) {<br> if(check_num(text[i])==1) {<br> if(i==0) {<br> a[0]=1;<br> } else {<br> if(text[i]>=48 && text[i]<=57) {<br> a[1]=1;<br> } else {<br> a[1]=0;<br> }<br> }<br> }<br> else if(check_str(text[i])==1) {<br> if(i==0) {<br> a[0]=2;<br> } else {<br> if(text[i]>=65 && text[i]<=122) {<br> a[1]=2;<br> } else {<br> a[1]=0;<br> }<br> }<br> }<br> }<br><br> if(a[0]==a[1]) return a[0];<br> return 3;<br>}<br><br>int check_num(char text) {<br> if(text>=48 && text<=57)<br> return 1;<br> else<br> return 0;<br>}<br><br>int check_str(char text) {<br> if(text>=65 && text<=122)<br> return 1;<br> else<br> return 0;<br>}</div>
댓글 분란 또는 분쟁 때문에 전체 댓글이 블라인드 처리되었습니다.