【发布时间】:2020-05-04 17:35:08
【问题描述】:
所以我创建了一个程序,它基本上可以打印任何给定的字符串:
示例: 输入:
Hello
输出:
Hello
ello
llo
lo
o
问题是,由于某种原因,如果我使用 icdiff 并将我的输出与文本文件中的输出进行比较,它会说我缺少元素并且我有更多的空格。
icdiff 输出:
Hello
ello
llo
如您所见,这与我所拥有的明显不同,但如果我在终端上测试它,我会得到预期的输出。
程序:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void print_array(char *p, int tamanho) {
int i;
for (i = 0; i < tamanho; i++) {
printf("%c", p[i]);
}
printf("\n");
}
void nova_str(char *p, char *s, int inicio, int tamanho) {
int i;
for (i = inicio; i < tamanho; i++) {
s[i] = p[i];
}
}
int main() {
char p[1001];
int len;
int j;
scanf("%s", p);
len = strlen(p);
print_array(p, len);
for (j = 1; j < len; j++) {
char *np = (char *)calloc(len + 1, sizeof(char));
nova_str(p, np, j, len);
print_array(np, len);
free(np);
}
return 0;
}
任何帮助都将不胜感激。
【问题讨论】:
-
calloc(2,sizeof(char))你总是分配 2 个字节的内存,即使你使用了len+1字节。 -
好的,我更正了,但它仍然给我这个错误