文字列を挿入(どこが間違っているのか分からない)

2041 ワード

文字列第8題
【説明】
2つの文字列strとsubstrがあり、strの文字数は10を超えず、substrの文字数は3である.substrをstrの中でASCIIコードが最も大きい文字の後ろに挿入し、複数の最大があれば最初の文字だけを考慮します.
【入力】
入力はいくつかの行を含み、各動作にはテストデータのセットがあり、フォーマットは
str substr
【出力】
テストデータのセットごとに、挿入後の文字列を出力します.
【入力例】
abcab eee
12343 555
【出力例】
abceeeab
12345553
#include
#include

int main(){
	char str[100]={0},substr[4];
	int i,l,max,j,t=0;
	char ch=0;
	while(scanf("%s",str)!=EOF&&scanf("%s",substr)!=EOF){
	l=strlen(str);
	str[l]=0; 
	str[l+3]='\0';           //       \0       ! 

	for(i=0;ich){
			ch=str[i];
			max=i;
			}
	}   //  ,!!!   i     ,    max! 
	for(j=max+4;j


類似度0.89
不明なエラー!
//  2,/*    str    ,   substr,    str     */ 
#include
#include

int main(){
	char str[15],substr[4];
	int i,l,max,j,t=0;
	char ch=0;
	while(scanf("%s",str)!=EOF&&scanf("%s",substr)!=EOF){
	l=strlen(str);
	for(i=0;ich){
			ch=str[i];
			max=i;
			}
	}   //  ,!!!   i     ,    max!
	for(i=0;i<=max;i++){
		printf("%c",str[i]);
	}
	printf("%.3s",substr);
	for(i=max+1;i

正しい
解決した
:
#include
#include

int main(){
	char str[100]={0},substr[4];
	int i,l,max,j,t=0;
	char ch=0;
	while(scanf("%s",str)!=EOF&&scanf("%s",substr)!=EOF){
		char str2[100];
	l=strlen(str);
	str[l]=0; 
	str2[l+3]='\0';           //       \0       ! 

	for(i=0;ich){
			ch=str[i];
			max=i;
			}
	}   //  ,!!!   i     ,    max! 
	for(j=max+4;j

問題の原因:文字列の長さは単純に+-で修正できるものではありません
ソリューション:最終配列を格納するために、ループ内に新しい配列を設定します.