2014-10-29 5 views
-1

간단한 채팅 프로그램을 만들기 위해 노력하고 있는데 세그먼트 화 오류가 발생했습니다. 이는 내 이해가 Java의 null 포인터와 비슷합니다. 문제가있는 것 같지만 해결 방법이 없습니다. iP 주소를 인쇄하려고 할 때 오류가 발생합니다. 어떻게이 문자열에 제대로 초기화를 시도 했습니까? 나는 여기에 문자열을 사용한 세그먼트 화 오류 문제

char *iP; 
strcpy(iP, "lsdlfkj"); 

char iP[20] = "asskdf"; 

을 시도 내 주요 코드입니다했다. serverMenu는 아직 수행하지 않습니다

#include <stdio.h> 
#include <string.h> 
#define CAP 15 
int size = 0; 

int serverMenu(int task, char *userid, char *ipA); 
struct user{ 
    char username[20]; 
    char *ipAdress; 
    unsigned short portNumber; 
}; 
struct user chatroom[CAP]; 
int main(){ 
char username[20]; 
char *iP; 
strcpy(iP, "aasdas"); 
unsigned short portNumber; 
printf("Welcome to the chat room!\n"); 
printf("Please enter your username (up to 20 characters long):\n"); 
scanf("%s", username); 


printf("Please enter your TCP port number\n"); 
scanf("%hu", &portNumber); 
int choice = 1; 
printf("\n%s\n", username); 
printf("%hu\n", portNumber); 
printf("%d\n", choice); 
printf("%s", iP); 
serverMenu(choice,username,iP) 
} 

인기있는 수요, 서버 메뉴로. 당신은 그 호출하기 전에 chatroom[size].ipAdress 메모리를 할당하지 않은

strcpy(chatroom[size].ipAdress, ipA); 

이 지금까지

int serverMenu(int task, char *username, char *ipA){ 
printf("Successfully logged on as"); 
if(task == 1){ 
    if(size != CAP){ 
     printf("Successfully logged on as"); 
     strcpy(chatroom[size].username, username); 
     strcpy(chatroom[size].ipAdress, ipA); 
     //chatroom[size].portNumber = pN; 
     size++; 
     printf("Successfully logged on as"); 
    } 
    else{ 
     printf("Sorry, there are no available spots in the chat room\n"); 
    } 
} 
return 0; 
} 
+3

최대 20 자까지 - 아니요, 최대 19 자까지 입력 할 수 있습니다. –

+0

난 당신이 서버 문제에 대한 – LeatherFace

+0

에 대한 귀하의 serverMenu보고 싶지 수도 있습니다 내가 배열에 던져 그 무작위 정수했다. 그것은 요점이 아니며 오류를 던지지 않을 것입니다. 및 가죽 얼굴, 그것을 위해 인쇄 진술에 도달하지 않습니다 그래서 그것을 serverMeny – user3704079

답변

2

이 문제 라인 내 전체 파일입니다.

또한, 이전 편집, 당신은 지금 당신이 두 번째 형태를 잘 작성하지

char *iP; 
strcpy(iP, "aasdas"); 

char iP[20]; 
strcpy(iP, "aasdas"); 

했다. strcpy을 사용하려면 먼저 iP에 대한 메모리를 할당해야합니다.

+0

이렇게하면 오류가 발생합니다. 어떻게 이것을 위해 메모리를 할당합니까? 내가 C와 자바에서 새로운 오전 – user3704079

+0

나는 모든 위의 구조체를 초기화합니까? – user3704079

+0

오호 내가 그 문제를 안다. 나는 * iPaddress를 설정하고 있지만 크기는 알려주지 않았다. – user3704079