【发布时间】:2016-04-07 22:09:45
【问题描述】:
当我运行这段代码时,我遇到了分段错误。我确定我做错了指针,但我不确定为什么或如何解决它。 我还包括了我试图以图片形式回答的问题。
#include <stdio.h>
#include <stdlib.h>
char * repeat_characters(char *s, int n) {
printf("%s", *s);
char temp;
int length = 0;
int i = 0;
int j = 0;
int k = 0;
char * newString;
while(s[length]) {
length++;
printf("%d", length);
} // finds length of string
newString = (char*) malloc(length*n*sizeof(char));
while(i++ < i*n) {
temp = s[i];
while (j++ < n) {
newString[k] = temp;
printf("%c", temp);
k++;
}
}
printf("%s", newString);
return newString;
}
int main () {
char * string[100];
int numReps = 0;
printf("Enter a string: ");
scanf("%s", string);
printf("\nEnter number of repetitions: ");
scanf("%d", &numReps);
repeat_characters(*string, numReps);
return 0;
}
【问题讨论】:
-
@M.M 说了什么,加上请使用制表符,我几乎无法分辨出该功能中有什么,没有什么,不容易阅读。话虽如此,请查看如何使用malloc。 tutorialspoint.com/c_standard_library/c_function_malloc.htm
-
哇。太粗鲁了。代码在我的文本编辑器中正确显示。对不起,这里的格式错误。我已经尝试查找如何使用 malloc,显然我不明白,否则我不会在这里发布。感谢您的帮助...
-
while(i++ < i*n)=>while (i++ < length)并在每个while (j++ < n)之前将j重置为 0 -
当我放#号时,导致include被加粗,而不是正常显示。是否需要包含格式代码以使我的代码显示在文本编辑器中的样子?
-
娜奥米,请阅读MarkDown。还有@MattClark ......如果你要去edit posts to fix the formatting,那么不要只是缩进4并将其保留为双倍行距并在文本中留下cmets,如“
#和<不会' t 出现”,但字符仍然丢失。 :-/