[C++] \0(null) 문자 화면표시 질문입니다.

gyxor의 이미지

#include<iostream>
#include<fstream>
using namespace std;

int main()
{
    ofstream file("data.txt",ios::out);
    file << "\0abc";
    file << '\0' << "abc";
	return 0;
}

null문자를 파일에 저장했습니다.
그런데.. '\0' 로 하게 되면 널문자를 공백으로 취급합니다.
abc로 저장되고
"\0"로 하게 되면..
abc로 저장이 됩니다.

첫째,
왜..작은 따옴표와 큰따옴표에 따라서 null문자의 의미가 달라지나요?
설명부탁드립니다.

둘째,
0xod 나 0x0a 는 각각 케리지 리턴 과 라인피드 라서 화면에 출력은 안되도
줄의 처음으로 커서를 옮기고 줄바꿈을 해주는 역할을 합니다.
그렇다면 \0 문자의 경우엔 화면에 아무것도 출력이 안되는것인가요?
갑자기 헷갈립니다.

두가지 답변부탁드립니다.

galadriel의 이미지

Quote:

첫째,
왜..작은 따옴표와 큰따옴표에 따라서 null문자의 의미가 달라지나요?
설명부탁드립니다.

이것은 문자의 처리와 문자열의 처리방식 때문에 그런것 같군요.

문자열일 경우는 NULL문자전까지 저장함으로 NULL문자가 포함되서 저장이 되지 않았으며

문자인경우는 넣어지도록 내부에서 처리되는 것 같습니다.

Quote:

둘째,
0xod 나 0x0a 는 각각 케리지 리턴 과 라인피드 라서 화면에 출력은 안되도
줄의 처음으로 커서를 옮기고 줄바꿈을 해주는 역할을 합니다.
그렇다면 \0 문자의 경우엔 화면에 아무것도 출력이 안되는것인가요?
갑자기 헷갈립니다.

이것은 으음..에디터 마다 처리방식이 틀려서 그런것 같습니다 vi에서는 잘보입니다 ^@ 이렇게 생긴놈으로요.

galadriel in the tower of elves

gyxor의 이미지

제가 한가지를 잘못 봤습니다.
file << "\0abc";
이럴때 abc가 입력이 되는것이 아니라
문자열 입력시 delimeter로 널문자가 쓰여서..
아무것도 입력이 안되는것이었는데요..

제 실수까지 감안해서 정확하게 알려주셔서 감사합니다..^^;
널 문자를 저장한다는것은 '\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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.