在下面使用printf()语句的代码中,我得到一个分段错误:11。如果没有它,我不会得到任何错误,但我想能够看到正确的值在newstring值中。我该怎么做?
char* newstring;
for(int i = 0; i < len; i++)
{
printf("value %d\n", tempfullstring[i]);
if (tempfullstring[i]>=97 && tempfullstring[i] <=122)
{
char value = tempfullstring[i];
newstring += value;
}
}
printf("The new string is %s", newstrng);
return 0;
最佳答案
我认为你对C字符串的工作方式有误解:
它们不会在声明时初始化(因此必须单独分配char* newstring;
,否则会得到未定义的行为)
它们不能与+=
运算符连接(因此newstring += value;
无效)
C字符串的空间需要显式管理(因此,您需要在自动存储区域中分配newstring
,或者在末尾添加free
)。
修复程序最简单的方法是猜测newstring
要多长时间,并使用strcat
向它追加数据:
char newstring[1000]; // some max length
newstring[0] = '\0'; // make it an empty string
...
strcat(newstring, value); // instead of newstring += value
关于c - C打印时出现段错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14964246/