2014-12-30 4 views
0

구조체의 멤버에 임의의 문자열을 생성하고이 값을 구조체의 멤버에 할당하는 방법을 알고 싶습니다.
구조체의 멤버에 임의의 문자열 생성

은 내 구조체는 이런 식으로 정의된다 :

struct student{ 
     int key; 
     char name[25]; 
} 

이미 구조체의 멤버 "키"의 난수를 생성합니다.

struct student s; 
    int r = rand() % 5000; 
    s.key=r; 

주 : 메소드의 코드
부분부터 srand (시간 (NULL)); main()에 정의되어 있습니다.

s.name에 대해 어떻게합니까?

+0

영숫자입니까? –

+0

[this] (http://stackoverflow.com/q/25759513/62576) 도움이 되셨습니까? –

+0

또는 [this] (http://stackoverflow.com/questions/15767691/whats-the-c-library-function-to-generate-random-string) - 등등. 문제가 무엇인지 알기가 어렵습니다. – usr2564301

답변

1

이 그냥이

generate_random_string(s.name, sizeof(s.name)); 
+0

감사! 그러나 "generate_random_string (s.name, sizeof (s.name))"의 값을 s.name에 어떻게 할당합니까? – Zombie

+0

값을 할당 할 필요가 없습니다 (실제로는 할 수 없음). 배열에 직접 쓰고 있습니다. 배열에 대한 포인터를'generate_random_string (s.name, sizelf (s.name))'에 전달합니다. 그래서 함수 안에 내용을 씁니다. 'generate_random_string()'함수의'string' 인자는's.name'이 가리키는 메모리의 같은 위치를 가리 킵니다. –

+0

좋아, 알았다! 다시 한 번 고마워, 작동 해! – Zombie

2

랜드 (처럼에 구조체 멤버를 통과 소문자

void 
generate_random_string(char *string, size_t length) 
{ 
    size_t i; 
    for (i = 0 ; i < length - 1 ; i++) 
     string[i] = rand() % ('z' - 'a') + 'a'; 
    string[length - 1] = '\0'; 
} 

의 임의의 문자열을 생성합니다)는 그래서 당신은 무작위 할당 rand()를 사용할 수 없습니다 int을 반환 문자열을 구조체 멤버에 전달합니다.

다음과 같이 임의의 문자열을 생성하려면 rand()를 사용하면됩니다.

char a[]="abcde...z"; 

for(i=0;i<20;i++) 
{ 
    int r = rand() %26; 
    s.name[i] = a[r]; 
} 
s.name[20] = '\0'; 

NULL을 입력하면 문자열이 종료됩니다.

관련 문제