Wednesday, February 21, 2007
C언어] 문자열 거꾸로 뒤집기, 반전시키기; Reverse String
문자열의 앞뒤 순서를 정반대로 변환하는 것입니다. 예를 들어, "ABC"를 "CBA"로 변경합니다.
다만 현재 이 소스로는, 영문과 숫자 등의 1바이트 문자만 되고, 한글이나 한자 등 2바이트 문자는 되지 않습니다.
소스 파일명: example.cpp
단어 단위로 거꾸로 뒤집어서 출력하기
컴파일 후 실행 결과 (비주얼C++ 2005에서):
참고: VC 2005 버전부터는 strtok 함수보다 안전한 strtok_s 함수를 추천하므로
strtok 함수를 사용하면 다음과 같은 경고가 나옴:
0.cpp(10) : warning C4996: 'strtok': This function or variable may be unsafe.
Consider using strtok_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS.
See online help for details.
이것은 위의 "단어 단위로 뒤집기" 소스와 같지만, 화면으로 곧바로 출력하지 않고, 결과를 메모리에 저장한 후, 한꺼번에 출력합니다.
따라서 이것이 더 실용성이 있습니다.
▶▶ C언어] 정수 배열 순서 거꾸로 뒤집기 함수; Reverse Array (int) Function
▶▶ C언어] 문자열 배열(포인터 배열) 순서 거꾸로 뒤집기; Reverse String Array
다만 현재 이 소스로는, 영문과 숫자 등의 1바이트 문자만 되고, 한글이나 한자 등 2바이트 문자는 되지 않습니다.
문자열 앞뒤 순서 정반대로 변환 예제
소스 파일명: example.cpp
#include <stdio.h>
#include <string.h>
void reverseString(char* s);
int main(void) {
char s[] = "ABCDEF 123 apple"; // 총 16글자 (공백까지 포함하여, 16바이트)
// 문자열 순서 거꾸로 뒤집기
reverseString(s);
// 뒤집어진 문자열 출력
printf("%s\n", s);
// 출력 결과: elppa 321 FEDCBA
return 0;
}
void reverseString(char* s) {
size_t size = strlen(s);
char temp;
for (size_t i = 0; i < size / 2; i++) {
temp = s[i];
s[i] = s[(size - 1) - i];
s[(size - 1) - i] = temp;
}
}
#include <string.h>
void reverseString(char* s);
int main(void) {
char s[] = "ABCDEF 123 apple"; // 총 16글자 (공백까지 포함하여, 16바이트)
// 문자열 순서 거꾸로 뒤집기
reverseString(s);
// 뒤집어진 문자열 출력
printf("%s\n", s);
// 출력 결과: elppa 321 FEDCBA
return 0;
}
void reverseString(char* s) {
size_t size = strlen(s);
char temp;
for (size_t i = 0; i < size / 2; i++) {
temp = s[i];
s[i] = s[(size - 1) - i];
s[(size - 1) - i] = temp;
}
}
단어 단위로 거꾸로 뒤집어서 출력하기
#include <stdio.h>
#include <string.h>
void reverseString(char* s);
int main () {
char s[] = "This is a test.";
char* word;
char* dummy = NULL;
word = strtok_s(s, " ", &dummy); // word 에 첫 단어 This 가 들어감
while (word != NULL) {
reverseString(word);
printf("%s ", word);
word = strtok_s(NULL, " ", &dummy);
}
return 0;
}
void reverseString(char* s) {
size_t size = strlen(s);
char temp;
for (size_t i = 0; i < size / 2; i++) {
temp = s[i];
s[i] = s[(size - 1) - i];
s[(size - 1) - i] = temp;
}
}
#include <string.h>
void reverseString(char* s);
int main () {
char s[] = "This is a test.";
char* word;
char* dummy = NULL;
word = strtok_s(s, " ", &dummy); // word 에 첫 단어 This 가 들어감
while (word != NULL) {
reverseString(word);
printf("%s ", word);
word = strtok_s(NULL, " ", &dummy);
}
return 0;
}
void reverseString(char* s) {
size_t size = strlen(s);
char temp;
for (size_t i = 0; i < size / 2; i++) {
temp = s[i];
s[i] = s[(size - 1) - i];
s[(size - 1) - i] = temp;
}
}
컴파일 후 실행 결과 (비주얼C++ 2005에서):
D:\Z>cl example.cpp && example.exe
example.cpp
sihT si a .tset
D:\Z>
example.cpp
sihT si a .tset
D:\Z>
참고: VC 2005 버전부터는 strtok 함수보다 안전한 strtok_s 함수를 추천하므로
strtok 함수를 사용하면 다음과 같은 경고가 나옴:
0.cpp(10) : warning C4996: 'strtok': This function or variable may be unsafe.
Consider using strtok_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS.
See online help for details.
이것은 위의 "단어 단위로 뒤집기" 소스와 같지만, 화면으로 곧바로 출력하지 않고, 결과를 메모리에 저장한 후, 한꺼번에 출력합니다.
따라서 이것이 더 실용성이 있습니다.
#include <stdio.h>
#include <string.h>
#define BUF_SIZE 1000
void reverseString(char* s);
int main () {
char s[] = "This is a test.";
char* word;
char* dummy = NULL;
char buf[BUF_SIZE]; // 결과 저장용 문자열을 위한 버퍼
buf[0] = NULL; // 초기화
word = strtok_s(s, " ", &dummy); // word 에 첫 단어 This 가 들어감
while (word != NULL) {
reverseString(word);
strcat_s(buf, BUF_SIZE, word);
strcat_s(buf, BUF_SIZE, " ");
word = strtok_s(NULL, " ", &dummy);
}
printf("%s\n", buf);
return 0;
}
void reverseString(char* s) {
size_t size = strlen(s);
char temp;
for (size_t i = 0; i < size / 2; i++) {
temp = s[i];
s[i] = s[(size - 1) - i];
s[(size - 1) - i] = temp;
}
}
#include <string.h>
#define BUF_SIZE 1000
void reverseString(char* s);
int main () {
char s[] = "This is a test.";
char* word;
char* dummy = NULL;
char buf[BUF_SIZE]; // 결과 저장용 문자열을 위한 버퍼
buf[0] = NULL; // 초기화
word = strtok_s(s, " ", &dummy); // word 에 첫 단어 This 가 들어감
while (word != NULL) {
reverseString(word);
strcat_s(buf, BUF_SIZE, word);
strcat_s(buf, BUF_SIZE, " ");
word = strtok_s(NULL, " ", &dummy);
}
printf("%s\n", buf);
return 0;
}
void reverseString(char* s) {
size_t size = strlen(s);
char temp;
for (size_t i = 0; i < size / 2; i++) {
temp = s[i];
s[i] = s[(size - 1) - i];
s[(size - 1) - i] = temp;
}
}
▶▶ C언어] 정수 배열 순서 거꾸로 뒤집기 함수; Reverse Array (int) Function
▶▶ C언어] 문자열 배열(포인터 배열) 순서 거꾸로 뒤집기; Reverse String Array
tag: cpp
C언어 | C/C++ (Visual C++) 프로그래밍
안녕하세요ㅠㅠ 그러면혹시 This is a test를 siht si a tset로 뒤집으려면 어떻게소스코드를 입력해야하나요?ㅠㅠㅜ
단어 뒤집기 소스 올렸습니다.
<< Home