c언어에서 문자열이 히든(숨겨) 질 수도 있습니까?

sh0ut의 이미지

문자열에서 숫자만 배열에 뽑아낼려고 isdigit()함수를 사용했는데요

----------------
1line sadfsdf
2line dfsafdsf
3line 1234
4line 4672
----------------

이렇게 4라인으로 1, 2번째 라인은 문자열 3, 4번째 라인은 숫자로된 문자열로 되어 있습니다.

그런데.. isdigit() 함수를 통해서 숫자로된 문자열만 뽑아냈는데.. printf() 로 결과를 보니...

----------------
1line
2line
3line 1234
4line 4672
----------------

이렇게 문자열은 보이지 않는데.. 자리를 차지하고 있더군요 -_-

혹시 공백이나 탭이나 개행문자가 들어가 있을 위험성이 있어서 isspace() 함수를 통해서 결과를 보려 했으니 해당사항이 없네요 ㅡㅡ;;;

이렇게 아무내용도 없는 빈 공간을 차지하는 부분을 어떻게 빼고 원하는 결과만 출력 할 수 있을까요??

isdigit() 함수가 아닌 다른 방법 강구해봐야할까요?;;;

익명사용자의 이미지

소스코드를 보여주셔야 얘기가 될 것 같군요.

cppig1995의 이미지

제가 대충 이해한 바에 의하면,
isdigit함수는 숫자인지 아닌지 체크하는 함수인데
문자열을 a에서 b로 복사하면서 복사과정에서 isdigit로 체크를 해서
b로는 숫자만 복사되게 하신 것 같네요.
(출력할 때 isdigit를 사용한게 아니라는 근거는 위의 printf 이야기에 있습니다.
보통 출력할때 isdigit를 사용하려면 putchar가 필요하지요;;;)

이런 함수를 사용해 보시는게 어떨까요?

#include <stdio.h>
#include <string.h>
#include <ctype.h>
 
void printOnlyDigits(const char *string)
{
int i;
for(i = 0; i < strlen(string); i++) if(isdigit(string[i])) putchar(string[i]);
}

Real programmers /* don't */ comment their code.
If it was hard to write, it should be /* hard to */ read.

cppig1995의 이미지

무엇보다, 문자열이 숨겨진게 아니라 문자열[0]이 NUL이겠죠.

Real programmers /* don't */ comment their code.
If it was hard to write, it should be /* hard to */ read.

전웅의 이미지

> for(i = 0; i < strlen(string); i++) if(isdigit(string[i])) putchar(string[i]);
>

돼지군님, char 가 signed char 와 동일한 표현 범위를 갖고, string[i] 가
음수를 갖는 경우가 되면 큰일나요!! ;-)

--
Jun, Woong (woong at icu.ac.kr)
Web: http://www.woong.org (서버 공사중)

--
Jun, Woong (woong at gmail.com)
http://www.woong.org

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.