【发布时间】:2019-03-29 16:26:20
【问题描述】:
这是我将字符串 2 附加到字符串 1 的代码。当我添加以下行时,代码工作正常:s1[null_index]='\0';
但是当我省略它时,它会在输出中再添加一次“道路”一词……这是为什么呢?为什么我必须指定 null_index 变量的最终值为'\0'....计算机是否应该已经知道这一点,因为它在我一开始声明和分配时就知道了?
#include<stdio.h>
#include<stdlib.h>
#include <string.h>
int main()
{
char s2[]="a lonely road";
char s1[]="Success is ";
int l=strlen(s1);
int null_index=l,i=0;
while(s2[i]!='\0')
{
s1[null_index]=s2[i];
i++;
null_index++;
}
s1[null_index]='\0';
printf("%s",s1);
}
【问题讨论】:
-
对不起。你的程序完全错误。您正试图在没有为您分配内存的情况下写出
s1的“结尾”。你的实际问题? C 中的字符串必须以 0 结尾。 -
你需要学习如何缩进你的代码。查看 C 教科书中的示例。
标签: c output concatenation string-concatenation