ポインタ 配列
Posted: 2015年10月27日(火) 00:35
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#define WORD_MAX (10)
int main(void){
int i;
int word_string;
char data_in[WORD_MAX];
char data_out[WORD_MAX];
char *pdata_in;
char *pdata_out;
int j;
int word_string2;
char data_in2[WORD_MAX];
char data_out2[WORD_MAX];
char *pdata_in2;
char *pdata_out2;
printf("%d文字以内で文字列(姓)を入力してください。\n", WORD_MAX);
while(1){
scanf("%s", &data_in);
rewind(stdin);
word_string = strlen(data_in);
printf("入力した文字列(姓)は%dです。\n", word_string);
if (word_string <= WORD_MAX) break;
printf("もう一度入力してください\n");
}
printf("============================================================\n");
pdata_in = &data_in[word_string - 1];
pdata_out = &data_out[0];
for (i = 0; i<word_string; i++)
{
*pdata_out = *pdata_in;
pdata_in--;
pdata_out++;
}
*pdata_out = '\0';
printf("%d文字以内で文字列(名)を入力してください。\n", WORD_MAX);
while(1){
scanf("%s", &data_in2);
rewind(stdin);
word_string2 = strlen(data_in2);
printf("入力した文字列(名)は%dです。\n", word_string2);
if (word_string2 <= WORD_MAX) break;
printf("もう一度入力してください\n");
}
printf("============================================================\n");
pdata_in2 = &data_in2[word_string2 - 1];
pdata_out2 = &data_out2[0];
for (j = 0; j<word_string2; j++)
{
*pdata_out2 = *pdata_in2;
pdata_in2--;
pdata_out2++;
}
*pdata_out2 = '\0';
printf("入力した文字列(姓):%s\n", data_in);
printf("反転した文字列(姓):%s\n", data_out);
printf("入力した文字列(名):%s\n", data_in2);
printf("反転した文字列(名):%s\n", data_out2);
strcat(data_in, data_in2);
strcat(data_out, data_out2);
printf("入力した文字列連結:%s\n", data_in,data_in2);
printf("反転した文字列連結:%s\n", data_out,data_out2);
rewind(stdin);
getchar();
return 0;
}姓と名で10文字以上入力したらデバックでエラーが出るので修正してください。お願いします。
#include <stdio.h>
#include <string.h>
#define WORD_MAX (10)
int main(void){
int i;
int word_string;
char data_in[WORD_MAX];
char data_out[WORD_MAX];
char *pdata_in;
char *pdata_out;
int j;
int word_string2;
char data_in2[WORD_MAX];
char data_out2[WORD_MAX];
char *pdata_in2;
char *pdata_out2;
printf("%d文字以内で文字列(姓)を入力してください。\n", WORD_MAX);
while(1){
scanf("%s", &data_in);
rewind(stdin);
word_string = strlen(data_in);
printf("入力した文字列(姓)は%dです。\n", word_string);
if (word_string <= WORD_MAX) break;
printf("もう一度入力してください\n");
}
printf("============================================================\n");
pdata_in = &data_in[word_string - 1];
pdata_out = &data_out[0];
for (i = 0; i<word_string; i++)
{
*pdata_out = *pdata_in;
pdata_in--;
pdata_out++;
}
*pdata_out = '\0';
printf("%d文字以内で文字列(名)を入力してください。\n", WORD_MAX);
while(1){
scanf("%s", &data_in2);
rewind(stdin);
word_string2 = strlen(data_in2);
printf("入力した文字列(名)は%dです。\n", word_string2);
if (word_string2 <= WORD_MAX) break;
printf("もう一度入力してください\n");
}
printf("============================================================\n");
pdata_in2 = &data_in2[word_string2 - 1];
pdata_out2 = &data_out2[0];
for (j = 0; j<word_string2; j++)
{
*pdata_out2 = *pdata_in2;
pdata_in2--;
pdata_out2++;
}
*pdata_out2 = '\0';
printf("入力した文字列(姓):%s\n", data_in);
printf("反転した文字列(姓):%s\n", data_out);
printf("入力した文字列(名):%s\n", data_in2);
printf("反転した文字列(名):%s\n", data_out2);
strcat(data_in, data_in2);
strcat(data_out, data_out2);
printf("入力した文字列連結:%s\n", data_in,data_in2);
printf("反転した文字列連結:%s\n", data_out,data_out2);
rewind(stdin);
getchar();
return 0;
}姓と名で10文字以上入力したらデバックでエラーが出るので修正してください。お願いします。