write() 함수에 관한 질문이요~

leo~~~~의 이미지

wirte()함수가요
write(int fd, const void *buf, size_t count);
man 2 write 메뉴얼 보니까 이렇게 되어있더라구요...
저기서 buf는 char형이자나요...
저는 타이머나 loop를 사용해서 저 buf의 값을
계속 바꾸고 싶은데요...
어떻게 해야 하나요....
아니면 int형을 char형으로 바꿀수 있는 방법이라도...
좀더 구체적으로 말씀드리자면..

strcpy( buf, “Hello” );
num = write( xp, buf, (int) strlen( buf ) );
buf[num] = 0;
printf(“%s >=< %d \n”, buf, num );

위 소스의 "Hello"부분 있자나요...
그부분을 계속해서 바꾸려고 하거든요...
숫자로요....
strcpy()이거대신 buf에 숫자 쓸수 있는 함수는 없나요??
답변 부탁드립니다~~

익명 사용자의 이미지

Quote:
int main ()
{
int i=0x41424344;
char ch='a';
char *ptr = "bcdef";

write( 1, (void *)&i, sizeof(int));
printf("---\n");

write( 1, (void *)&ch, sizeof(char));
printf("---\n");

write( 1, (void *)ptr, strlen(ptr));
printf("---\n");

return 0;
}

leo~~~~의 이미지

헛.....설명이라도 좀 해주시지....^^;;

소맛라면의 이미지

윗분의 소스는 일단 원하는 타입으로 선언하고 초기화 하고
write함수를 사용할때 (void *)형으로 케스팅 하라는 말씀이신 것 같습니다.

Quote:
저기서 buf는 char형이자나요...

왜 이렇게 생각하세요??

포인터 변수는 선언 될때 반드시 그 타입이 정해져야 합니다..
그리고 그 타입만 가리킬 수 있죠..
하지만 void형 포인터는 타입이 정해져 있지 않기 때문에 어떤 타임도 가리킬수 있습니다...

buf 변수가 char*로 사용될수 있는 것이지....
꼭 char*는 아닙니다..

무엇을 위해 사는가..

익명 사용자의 이미지

아...그렇군요...ㅋㅋ
감사합니다~~~^^

익명 사용자의 이미지

근데 buf를 int로 한담에
다시했는데도...안되네요..ㅡ,.ㅡ;;
제가 워낙 초보라서....ㅜ.ㅜ

hie의 이미지

sprintf 를 사용하세요.

즐프하세요..

익명 사용자의 이미지

Quote:
main()
{
char buf[1024];
int fd = 1; // stdout으로 하드코딩

memset( buf, 0, 1024);

strcpy( buf, "Hello"); // 이제 buf는 "Hello"가 되었다.
num = write( fd, buf, (int) strlen( buf ) ); // num <= strlen(buf)가 된다.

strcpy( buf + 1, "ELLO"); // 이제 buf는 "HELLO"가 되었다.
num = write( fd, buf, (int) strlen( buf ) ); // num <= strlen(buf)가 된다.

sprintf( buf + 5, "-World %d", 2005); // buf가 "HELLO-WORLD"가 되었다.
num = write( fd, buf, (int) strlen( buf ) ); // num <= strlen(buf)가 된다.

num = write( fd, buf+6, (int) strlen( buf )-6 ); // num <= strlen(buf)가 된다.

return 0;
}
// 결국, 하고 보니, 포인터 얘기가 되었다.

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.