c언어 문자열 단어만 뒤집기

하아해킹@Naver의 이미지

#include<stdio.h>
 
int main(void)
{
	char test[] = "i am a boy.";
	int i, j, n, size;
	char temp;
 
	for (i = 0; i <= sizeof(test) - 1; i++)
	{
		 n= i;
		size = 0;
 
		if (test[i] == ' ')
		{
			while (test[n + 1] != ' ')
			{
				size++;
				n++;
			}
			for (j=i; j <(size/2)+1; j++)
			{
				temp = test[j + 1];
				test[j + 1] = test[j + 2];
				test[j + 2] = temp;
 
			}
 
		}
 
	}
	printf("%s\n", test);
}

이건데요... 제가 단어만 뒤집고싶은데 잘안되네요 ㅠㅠ 좀 알려주세요ㅠ

하아해킹@Naver의 이미지

함수를안쓰고 어찌하죠?

 의 이미지

Quote:
strrev( ) function is non standard function which may not available in standard library in C.

플랫폼을 명시하지 않은 C언어 질문글에 비표준 함수를 답변으로 다는 건 그다지 바람직해 보이지 않는군요.

원래 질문으로 돌아가서, C언어에서 문자열을 뒤집는 건 그다지 어려운 문제가 아닙니다.
뒤집을 문자열의 양쪽부터 시작해서 안쪽으로 들어가면서 서로 swap하면 되지요.
보아하니 swap을 어떻게 하는지는 알고 계신 것 같네요.

(Disclaimer: 멀티바이트 문자가 들어있다면 물론 얘기가 크게 달라집니다만, 그 문제는 논외로 합시다.)

문제는 "어디부터 어디까지 뒤집을지" 찾는 것입니다. 보아하니 질문자님의 코드는 공백 문자(' ')를 구분자 삼아 단어를 정의하는 것 같군요.

변수 i와 n이 각각 단어의 시작(의 바로 전)과 끝을 가리키는 변수인 것 같은데, 거기까지만 봐도 이미 문제가 있습니다.

1) 변수 i는 공백 문자를 찾는데, 만일 문자열에 공백 문자가 연이어 나타나면 첫째 공백을 가리킨 채 진행하게 됩니다. 그러길 바라시진 않았을 텐데요.

2) 변수 n은 공백 문자를 찾을 때까지 상한 없이 계속 증가합니다. 문자열이 공백 문자로 끝나지 않을 경우 문자열 끝을 넘어서고 말 겁니다.

3) 일단 단어를 찾고 나면, 다음 단어는 이전에 찾은 단어의 끝 지점에서부터 찾기 시작해야 하지 않을까요. 그렇게 하기 위한 코드가 보이지 않는군요.

단어를 뒤집는 건 일단 둘째치고, "단어의 시작점과 끝점"을 모두 찾아 출력하는 프로그램을 먼저 만들어 올려보세요. 적절한 중간 단계가 될 겁니다.

댓글 달기

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