C 프로그래밍 안되는 부분좀 봐주세요 ㅠㅠ
으뜸
질문 제목 : string.h 헤더파일 없이 string관련 함수들을 구현하는 건데 문제가 있어요 ㅠㅠ위에 compare까지는 잘 되는데 concat 부분에서 말썽을 일으킵니다. 뭐가 문제인지 봐주세요 ㅠㅠ질문 내용 : #include stdio.h
#include stdlib.h
typedef struct {
char *str;
} string;string *createstring(char *str); // creates a new string with str
// use dynamic memory allocation (call malloc() twice)
string* copystring(string *str); //returns a copy of str
int comparestring(string *str1, string *str2); // compares two strings.
// if str1 precedes str2, return -1
// if str1 and str2 have the same content, return 0
// otherwise, return +1
string* concatenatestring(string *str1, string *str2); // returns a new string
// containing str1 + str2.
void deletestring(string *str); //deletes a string
// use free() to discard both str-str and str
char *getstring(string *str); // providedint getstrlen(char *str);int main()
{
string *str1 = null;
string *str2 = null;
string *str3 = null; str1 = createstring(abc);
str2 = createstring(123);
str3 = copystring(str1); printf(str1 = %s\n, getstring(str1));
printf(str2 = %s\n, getstring(str2));
printf(str3 = %s\n, getstring(str3)); printf(comparestring(str1, str2) = %d\n, comparestring(str1, str2));
printf(comparestring(str2, str1) = %d\n, comparestring(str2, str1));
printf(comparestring(str1, str3) = %d\n, comparestring(str1, str3)); deletestring(str3); str3 = concatenatestring(str1, str2); printf(concatenatestring(str1,str2) = %s\n, getstring(str3)); deletestring(str1);
deletestring(str2);
deletestring(str3); system(pause);
return 0;
}string *createstring(char *str) {
string *string = null;
int i; int length_of_string = getstrlen(str); string = (string*)malloc(sizeof(string)); string-str = (char*)malloc(length_of_string); for(i=0; i length_of_string; i++)
string-str[i]= str[i]; string-str[i] = 0; return string;
}string* copystring(string *str) {
int length = getstrlen(str-str); char* temp = (char*)malloc(length+1); int i; for(i=0; i length; i++)
temp[i] = str-str[i];
temp[i] = 0; str-str = temp; return str;
}
char* getstring(string *str)
{
return str-str;
}int comparestring(string *str1, string *str2) { int length1 = getstrlen(str1-str);
int length2 = getstrlen(str2-str);
int minlen = (length1 = length2 ? length1 : length2); int i = 0;
for(i = 0; i minlen; i++){
if(str1-str[i] str2-str[i])
return 1;
else if(str1-str[i] str2-str[i])
return - 1;
} if(length1 minlen)
return 1;
else if(length2 minlen)
return -1;
else
return 0;
}
string* concatenatestring(string *str1, string *str2) {
int len1 = getstrlen(str1-str); --------------------------여기를 읽어들일때 문제가 생깁니다 ㅜㅜ
int len2 = getstrlen(str2-str); string *temp = null;
int i;
int j; temp = (string*)malloc(sizeof(string)); temp-str = (char*)malloc(len1 + len2 + 1); for(i=0; i len1; i++)
temp-str[i] = str1-str[i]; for(j=0; j len2; i++, j++)
temp-str[i] = str2-str[j]; temp-str[i] = 0; return temp;
}void deletestring(string *str) {
if(str) {
if(str-str)
free(str-str);
free(str);
}
}
int getstrlen(char *str) {
int length = 0;
for(; str[length] !=0; length++); ----------------------이부분과 연계해서 그런것 같은데요
return length;
}다른 함수들에서는 getstrlen함수가 잘 작동하다가 유동 concat함수에서만 문제가 일어나네요....똑같이 썼는데 왜 유독 이곳에서만 문제가 나는지.....조언 부탁드립니다.함수의 return형태나 파라미터는 저대로 유지해야 합니다...ㅠ
번호 | 제 목 | 글쓴이 | 날짜 |
---|---|---|---|
2692343 | scnaf에 자꾸 선언을 참조하라는데;; (8) | 도래 | 2025-04-22 |
2692282 | 도스상에서 생성된 exe파일에 press~ 뜨게 하기 (4) | 회사원 | 2025-04-21 |
2692256 | scanf("%*c"); ㅠㅠ 고수님들 | 거북이 | 2025-04-21 |
2692230 | 하노이탑 질문입니다. (1) | 미쁘다 | 2025-04-21 |
2692210 | 정보 올림피아드 문제인데.. 풀이 과정이 궁금합니다.(재귀함수) (5) | 물티슈 | 2025-04-20 |
2692144 | C언어와 리눅스에 대한 질문입니다. | 싴흐한세여니 | 2025-04-20 |
2692114 | 컨텍스트 스위칭하는데 걸리는 시간 측정.. | YourWay | 2025-04-19 |
2692086 | 간접참조 연산자, 증감연산자 질문이용! (2) | 블랙캣 | 2025-04-19 |
2692056 | 주석좀 달아주세요. 몇개적엇는데 몇개만달아주세요. (2) | DevilsTears | 2025-04-19 |
2691978 | 진수 쉽게 이해하는법... (3) | 지지않는 | 2025-04-18 |
2691949 | getchar() 한 문자를 입력받는 함수 질문 | 채꽃 | 2025-04-18 |
2691919 | 배열 정렬 및 합치기 질문입니다. | 사과 | 2025-04-18 |
2691845 | c언어왕초보 질문이 있습니다........ | 루나 | 2025-04-17 |
2691815 | void add(int num); 함수... (4) | 살랑살랑 | 2025-04-17 |
2691756 | 명령 프롬프트 스크롤바가 없어요 | 두메꽃 | 2025-04-16 |
2691725 | 자료구조에 관련해서 질문이 있어 글을 올립니다. | 누리알찬 | 2025-04-16 |
2691697 | if 문에서 구조체 배열에 저장되있던 문자열 검사하는 법 ? (2) | 민트맛사탕 | 2025-04-16 |
2691678 | C언어 함수 질문이요~!!! | 연보라 | 2025-04-15 |
2691650 | 반복문 | 돋가이 | 2025-04-15 |
2691618 | 링크드리스트 개념 질문이예요 (3) | 맨마루 | 2025-04-15 |