【发布时间】:2021-01-19 00:18:47
【问题描述】:
我想从给定集合中的随机字符数中获取一个单词,但是出现了分段错误。如何摆脱它?
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
char* getrand() {
char* symbols[] = {"a,", "b", "с", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"};
char* letter;
char* words;
for (int i = 0; i < rand() % 10; i++) {
letter = symbols[rand() % 26];
words = strcat(letter, symbols[rand() % 26]);
}
return words;
}
int main(void) {
srand(time(NULL));
char* new_word;
new_word = getrand();
printf("%s\n", new_word);
return 0;
}
【问题讨论】:
-
为了造一个词,首先需要有一个空格来放这个词。
strcat不会产生空格,请阅读documentation。 -
即变量“words”需要使用malloc吗?
-
@RumeOne 你的第一个符号是
"a,"还是"a"?可能只是一个错字(我的意思是逗号)? -
是的,这是一种可能性。您还需要更改呼叫
strcat的方式。
标签: arrays c string pointers memory-management