게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
c언어 문자열 변경프로그램 도와주세요
게시물ID : jisik_86377짧은주소 복사하기
작성자 : 강두
추천 : 0
조회수 : 1147회
댓글수 : 1개
등록시간 : 2010/10/10 17:23:11
c언어 문자열 변경하는 프로그램인데요

정말 어렵게만 느껴지네요

제가하고싶은건

변경 전 문자열 
hi my name is jangsera 
변경 대상 문자열을 입력하세요. 
hi 
변경할 문자열을 입력하세요. 
hello 
변경 후 문자열 
hello my name is jangsera 

이건데

그나마 name -> hellow로 변경하면 되는것같으면서도 소스가 많이꼬인것같네요

제가원하는건 문자열 변경한다음에 화이트스페이스만나면 그 화이트스페이스뒤에있는

문자열들을 함수로 따로넘겨준다음에 임시배열에 넣어두고 다시

뒤에다가 strcat로 붙여주려고하는겁니다

c언어 잘하시는분들 도움좀 부탁드립니다

--------------------- 소스부분입니다 -----------------------------


#include <stdio.h>
#include <string.h>


void copy(char *str, char *cop, int *i);
void del(char tmp);

int main()
{
char str[80] = "hi my name is kimjungyong";
char target[20];   // 변경대상 문자열
char change[20];  // 변경할 문자열
char tmp[20]={0};
int i=0, j=0;
int tmp_i = 0;
int strcut, tmpcut,  copcut=0;
char cop[80];
int size;

printf("변경 전 문자열\n");
puts(str);

printf("변경 대상 문자열을 입력하세요.\n");
gets(target);

printf("변경 할 문자열을 입력하세요.\n");
gets(change);

while(str[i] != '\0')
{
if(str[i]==' ')
{
i++;
tmp[tmp_i] = '\0';

//puts(tmp);

if(strcmp(tmp, target)==0)
{
strcut = i-2;
tmpcut = tmp_i - 1;

while(str[strcut] == tmp[tmpcut])
{
if(tmpcut==0) break;

strcut--;
tmpcut--;
}

while(1)
{
if(str[strcut] ==' ' && copcut==0)     // 바꿔줄 자리가 화이트스페이스 이면 
{
size = sizeof(str) / sizeof(str[0]);
copy(str, cop, &i, &size);     // 새로쓰기 함수 호출
copcut++;    // 한번만호출

}

str[strcut] = change[j];
strcut++;
j++;

if(change[j]=='\0')
{
strcat(str, cop);
break;
}
}

}
// 입력받은 변경대상 문자열과 비교
// 다르면 다음진행
// 같으면 문자열 변경 코딩

tmp_i = 0;  //  tmp배열 첨자 초기화
del(tmp);   // tmp배열 값 초기화 함수 호출

}

tmp[tmp_i] = str[i];
tmp_i++;
i++;
}

tmp[tmp_i] = '\0';
puts(str);
// 출력 대신에 마지막 문자열 처리부분 추가(위의 기능과 동일)

return 0;
}


/* 새로쓰기 함수 */
void copy(char *str, char *cop, int *i, int *size)
{
int k=0, q;
q= *i;

while(q != *size-1)
{
cop[k] = str[q];

k++;
q++;
}

}

void del(char *tmp)
{
int i=0;

while(tmp[i]!='\0')
{
tmp[i]='\0';
}
}

전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호