2014-10-09 3 views
-2

이것은 strcpy 함수입니다.할당은 C에서 캐스트가없는 포인터에서 정수를 만듭니다.

#include <stdio.h> 
const char *temp1[100]; 
const char *temp2[100]; 
int i,j; 
const int s1; 
const int s2; 
char *in[100]; 
char *stradd(char *str1,char *str2) 
{ int s1,s2; 
    int i,j; 
    *temp1= str1; 
    *temp2= str2; 
    s1 = strsize(*temp1); 
    s2 = strsize(*temp2); 
    while(s1<=s2 || s1>=s2) 
    { 
     for(i=s1,j=0;temp2[j]!='\0';i++,j++) 
      *(str1[i]) = *(str2[j]); 
    } 
    str1[i] = '\0'; 
    return str1; 
} 

int main() 
{ 
    char in[100]; 
    printf("Enter a string:\t"); 
    scanf("%s",in); 
    stradd(in,"Hello"); 
    for(i=0;i<=*(strsize(in));i++) 
    { 
    printf("\n%c",in[i]); 
    } 
    return 0; 
} 



#include <stdio.h> 

char* strsize(const char *s) 
{ int i,j; 
    char *name = s; 
    for(i=0;i<=name[i];i++) 
     j=i+1; 
    return j; 
} 

은 내가 (* int)이 단항 *에 인수의 잘못된 유형을 말하는 *(str1[i]) = *(str2[j]);에서 오류가 발생, 할당 캐스트, 없이 정수의 포인터를 만드는 말, s1s2에 오류가 발생합니다. 내가 strsize의 반환 유형을 int로 처리하고 싶다면 어떻게 할 수 있습니까 ???

+0

힌트 :'strsize'의 리턴 타입은 무엇인가? – Evert

+0

왜냐하면 그것들을 int로 delcare하고 그것들을 포인터로 만들려고하기 때문입니다 ... – jgr208

+0

문자열 선언과 약간 혼동스러워 보입니다. 'const char * temp1 [100];'틀린 것 같습니다. –

답변

0

난 당신이 포인터와 함수를 사용하여 문자열을 복사 할 생각

#include<stdio.h> 

void copy_string(char*, char*); 

main() 
{ 
    char source[100], target[100]; 

    printf("Enter source string\n"); 
    gets(source); 
if (source && source[0] == '\0') { 
     printf("source is empty\n"); 
     return 0; 
     } 
    copy_string(target, source); 

    printf("Target string is \"%s\"\n", target); 

    return 0; 
} 

void copy_string(char *target, char *source) 
{ 
    while(*source) 
    { 
     *target = *source; 
     source++; 
     target++; 
    } 
    *target = '\0'; 
} 
+0

만약 target이 NULL이라면, 당신의 프로그램은 작동하지 않을 것입니다. 그리고 소스 문자열이 너무 커서 목표를 결정할 수 없을 때 –

+0

이것은 OP를 기반으로 한 단순한 프로그램이고 100 자와 물건들 . 복잡한 메모리 관리 필요 없음 @vinayhunachyal – jgr208

관련 문제