드래그 앤 드롭으로 즐겨찾기 아이콘 위치 수정이 가능합니다.
게시물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'; } }
댓글 분란 또는 분쟁 때문에 전체 댓글이 블라인드 처리되었습니다.
새로운 댓글이 없습니다.