스트링 조작에 관해서..

shs0917의 이미지

예를 들면 data[10] = "hello!"라고 하구요..

while(data[i] != NULL){
printf("%c", data[i] + 5);
}
이런식으로 해서.. 각각의 문자를 바꾸었는데요...

다음에 data[i] - 5를 해도 원래대로 되지를 않네요..

답변 부탁 드립니다.

for1003의 이미지

data[i] + 5라구 해서..

실제 데이터가 바뀌는건 아니지요.. --;;

원 데이터 그대로 있습니다..

zhangyuan의 이미지

main()
{
    char temp[]={"hello"};
    char str_temp[10]={0,};
    int i;

    for(i=0;i<10;i++){
        if(temp[i] != NULL){
            str_temp[i]=temp[i]+5;
        }
    }
    str_temp[i]='\0';
    printf("%s\n",str_temp);

    for(i=0;i<10;i++){
        if(temp[i] != NULL){
            temp[i]=str_temp[i]-5;
        }
    }
    temp[i]='\0';
    printf("%s\n",temp);
}

잘되는것 같은데요..

삶의 이탈을 꿈꾸며..

moonzoo의 이미지

이렇게 하셔도..

#include <stdio.h>

int main()
{
    char data[10] = "hello!";
    int i;

    i = 0;
    while(data[i] != NULL)
    {
        printf("%c", data[i] = data[i] + 5);
        i++;
    }
    printf("\n");

    i = 0;
    while(data[i] != NULL)
    {
        printf("%c", data[i] = data[i] - 5);
        i++;
    }
    printf("\n");
}

아마 사소한 실수 일듯 하네요..

akbar의 이미지

...

shs0917의 이미지

먼저 답변에 감사 드립니다...

제가 바보같이 출력만 시키고 원래의 데이터는 조작도 하지 않은채..

다시 변환을 하니까.. 결국엔... 인코드 디코드가 되지 않은 거군요..

컴퓨터가 이해할수 있는 코드는 어느 바보나 다 작성할 수 있다. 좋은 프로그래머는 사람이 이해할 수 있는 코드를 짠다 - 마틴파울러

psychic의 이미지

단순히 +5만 해준다면
'z'의 경우를 생각해 보세요.
아마도 님이 원하시는 대로 하려면, modulus 26연산을 해주셔야 될듯.
Caesar cipher라고 문자를 몇 개 쉬프트 하는 암호화방식이란게 있죠.
http://codebreaker.dids.com/history2.htm
여기서는 5개를 쉬프트하는 거네요.

암호화시
if ( data[i]가 A~Z사이라면 )
enc_data[i] = (data[i]-'A'+5)%26+'A' ;
else if ( data[i]가 a~z사이라면 )
enc_data[i] = (data[i]-'a'+5)%26+'a' ;

그리고 복호화시에도 고려해야 겠죠.
좀만 더 생각하시면 복호화도 구현하실 수 있을 껍니다.
그럼, 즐프하세요~

댓글 달기

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