krr*_*hna 1 c algorithm pointers
我有下面的代码连接两个字符串.第一个有while条件,但第二个有for循环失败.我通过以下输入独立运行它们.
int original[100]="c" , add[50] = "pgm";
concatenate_string(original, add);
printf("String after concatenation is \"%s\"\n", original);
//strcat(original,add);
//printf("strcat is : %s",original);
void concatenate_string(char *original, char *add)
{
while(*original)
original++;
while(*add)
{
*original = *add;
add++;
original++;
}
*original = '\0';
}
void strcat(char *original,char *add)
{
for (;*original++;);
for (;*add;)
*original++=*add++;
*(original)='\0';
}
Run Code Online (Sandbox Code Playgroud)
因为在第二个代码中,您将在nul \0符号后附加字符串:
for (;*original++;);
^ always increments, even after nul found
Run Code Online (Sandbox Code Playgroud)
应该:
for (;*original; original++);
Run Code Online (Sandbox Code Playgroud)
注意:
代码:
for (;*original++;);
Run Code Online (Sandbox Code Playgroud)
相当于
while (*original++);
Run Code Online (Sandbox Code Playgroud)
但不是你正在使用的.