【发布时间】:2019-04-25 19:49:20
【问题描述】:
我是 C 的新手,所以如果我不够清楚,请耐心等待。 我有一个任务,我需要创建一个函数来获取平方字符矩阵并从中创建一个字符串。 该函数最终应该返回一个指向字符串的指针, 这样我就可以用它初始化一个字符串并在最后打印它。
(我也被限制在这个函数中只使用指针而不是常规数组语法)
例如矩阵是:
R O M E
G O A L
H E A D
D E A D
我想写一个这样的句子:"ROME GOAL HEAD DEAD"。
我尝试创建一个只在矩阵行上运行的 for 循环,这样我就可以在我使用的第一行中获取每一行并复制到我之前已经准备好的字符串(其中有足够的空间)strcpy() 和另一个strcat()。
什么都没发生。
对不起我的英语,谢谢。
char * makeString(char *smallMat, int rows, char *pStr ) {
int i;
char sentence[(rows * rows) + rows + rows];
pStr = &sentence;
for (i = 0; i < rows; ++i) {
if (i == 0) {
strcpy(sentence, *(smallMat + i));
}
else{
strcat(sentence, ' ' + *(smallMat + i));
}
}
return pStr;
}
【问题讨论】:
-
strcpy和strcat仅适用于以 null 结尾的数组,因此请确保这是格式。除此之外,我相信您需要为返回字符串动态分配内存,因为在静态分配中使用变量不应该起作用,尽管一些编译器会隐藏它。 -
当你将指针返回到静态数组时,该位置的内存可能会也可能不会被保留,因为它在堆栈上,并且可能会在函数结束后被覆盖。跨度>
-
@Y.tec 您能否澄清
pStr是什么以及返回值应该是什么?函数应该返回构造的字符串还是应该将字符串写入pStr?返回值和pStr似乎是多余的。