2013-03-11 5 views
0

을이 주 밖에 할 수 없습니다문자열의 배열을 초기화하고 그들에게 사용

char message_ecran[NUMBER_OF_STRINGS][STRING_LENGTH+1]; 

그리고 이것은 내가 문자열 message_ecran의 배열을하고 싶은 내 기능

int main(void) 
    { 
     Init(); 

     int i; 
     char texte7[] = "io"; 

     for (i=0;i<=NUMBER_OF_STRINGS;i++) 
      { 
      message_ecran[i] = texte7; 
      } 
    } 

이지만, 작동하지 않습니다 :

incompatible types in assignment 
+0

C로 할 수 없습니다. 할당 연산자 대신'strcpy_s'를 사용하십시오. –

+1

@AnishRam :'strcpy_s'는 C 표준 라이브러리의 일부가 아닙니다. 대신에'strncpy'를 사용하십시오. – Zeta

+0

@Zeta, 좋은 지적. 나는 그것을 몰랐다. 생각해 보니,'memset'이나'memcpy'가 더 좋지 않습니까? –

답변

1

strcpy()를 구현하려고 .

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

#define NUMBER_OF_STRINGS 3 
#define STRING_LENGTH 80 

char message_ecran[NUMBER_OF_STRINGS][STRING_LENGTH+1]; 

int main(void) 
{ 
    int i; 
    char texte7[] = "io"; 

    for (i=0;i<=NUMBER_OF_STRINGS;i++) 
    { 
     strcpy(message_ecran[i],texte7); 
     puts(message_ecran[i]); 
    } 
} 
1

지금 수행중인 작업은 포인터의 할당입니다.

한 문자열을 다른 문자열에 할당 할 수 없으므로 실제로 데이터를 복사하려면 strcpy()을 사용해야합니다.

strcpy(message_ecran[i], texte7); 

또한 당신은 당신이 복사하려는 문자열을 message_ecran[i]에 할당 된 충분한 메모리가 있는지 확인해야합니다. 그렇지 않으면 데이터가 손상됩니다.

편집 :

당신은 확인할 수 있습니다, 다음

char * strncpy (char * destination, const char * source, size_t num); 

strncpy(message_ecran[i], texte7, STRING_LENGTH); 
+0

할당 된 메모리가 충분한 지 어떻게 확인해야합니까? – edi9999

+1

@ edi9999 수정보기 – Alex

1

당신은 문자열을 복사하는 strcpy를을 사용해야합니다 :

if(strlen(texte7) < STRING_LENGTH+1) 

아니면 단순히 다음과 같은 기능을 사용할 수 있습니다 과제는 작동하지 않습니다.

strcpy(message_ecran[i], texte7); 
0

사용 strcpy를 (대상, 소스)와

message_ecran[i] = texte7; 

를 교체하고 프로그램에서

관련 문제