Skip to content

Instantly share code, notes, and snippets.

@KeitetsuWorks
Created November 20, 2018 15:16
Show Gist options
  • Select an option

  • Save KeitetsuWorks/6d40fa3ed9179b194d6aa70cb7d0d083 to your computer and use it in GitHub Desktop.

Select an option

Save KeitetsuWorks/6d40fa3ed9179b194d6aa70cb7d0d083 to your computer and use it in GitHub Desktop.
引数として受け取った文字列を逆順にコピーする関数 void str_copy_reverse(char dst[ ], char src[ ]) を作成せよ.
/**
* @file q14199270599.c
* @brief q14199270599
* @author Keitetsu
* @date 2018/11/20
* @copyright Copyright (c) 2018 Keitetsu
* @par License
* This software is released under the MIT License.
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/**
* 引数として受け取った文字列を逆順にコピーする関数 void str_copy_reverse(char dst[ ], char src[ ]) を作成せよ.
* また,これを用いて,キーボードより受け取った文字列を逆順に表示するプログラムを作成せよ.
* 例えば, "Marina Bay Sands Singapore" -> "eropagniS sdnaS yaB aniraM" となることを確認せよ.
*/
void str_copy_reverse(char dst[], char src[]);
int main(void)
{
char key_buf[256];
char *result_str;
memset(key_buf, 0, sizeof(key_buf));
fprintf(stdout, "Key in a string>> ");
scanf("%255[^\n]", key_buf);
result_str = (char *)malloc(sizeof(char) * (strlen(key_buf) + 1));
if (result_str == NULL) {
fprintf(stderr, "[ERROR] memory allocation error\n");
return -1;
}
memset(result_str, 0, sizeof(char) * (strlen(key_buf) + 1));
str_copy_reverse(result_str, key_buf);
fprintf(stdout, "%s\n", result_str);
free(result_str);
return 0;
}
void str_copy_reverse(char dst[], char src[])
{
size_t dst_strlen;
int i, j;
char buf;
strcpy(dst, src);
dst_strlen = strlen(dst);
i = 0;
j = dst_strlen - 1;
while (i < j) {
buf = dst[j];
dst[j] = dst[i];
dst[i] = buf;
i++;
j--;
}
return;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment