【发布时间】:2020-04-03 11:26:11
【问题描述】:
我有一个任务。我必须将所有值从一个 char 数组 (sentence[]) 复制到另一个空 char 数组 sentence2[]),但我不知道为什么会出现分段错误。他们还告诉我们,我们必须创建自己的 strlen 函数来检查字符串的长度。
这是我的代码
#include <stdio.h>
#include <stdlib.h>
int new_strlen (char *tab)
{
int i;
for (i = 0; tab[i] != '\0'; ++i);
return i;
}
int copyText(char from[],char to[],int max)
{
int i, j;
if (new_strlen(from) <= max)
{
for(int i = 0; i != '\0'; i++) {
to[i] = from[i];
}
to[i+1] = '\0';
}
return 0;
}
int main (int argc, char *argv[])
{
char sentence[] = "C is \n a \n programming \t language";
char sentence2[1000];
copyText(sentence, sentence2, 1000);
printf("Show my array: %s \n", sentence2);
return 0;
}
【问题讨论】:
-
这个
i != '\0'应该是from[i] != '\0'。也只在那个 for 循环中执行i = 0而不是int i = 0。并将to[i+1]更改为to[i]。 -
@Eraklon 这是对这个问题的一个非常完整的答案。你应该这样发布。