在C中操作字符串的两种方法有什么区别?

我想将字符串“ str”复制到p。首先,我使用注释掉的代码,但是输出为空。因此,我尝试了位于注释区域下方的代码,并且该代码有效。两种在C中操作字符串的方法有什么区别?预先感谢。

    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>

    int main(void)
    {
        char *str = "laekfja";
        char *p = (char*)malloc(51 * sizeof(char));

        //First try.
        /*  while(*str)             
                {                   
                    *p++ = *str++;  
                }                   
            *p = '\0';
            printf("%s\n",p);    
        */

        //Second try.
        int i = 0;
        while(i < strlen(str))
            {
              p[i] = str[i];
              i++;
            }
        p[i] = '\0';
        printf("%s\n",p);
        return 0;  
    }
hanjinshuen 回答:在C中操作字符串的两种方法有什么区别?

这两种方法都可以复制字符串。第一种方法的错误是在循环完成后打印出复制的字符串:

printf("%s\n",p);

这时,p指向插入副本中的最后一个字符,即空字符,而不是字符串的开头。因此printf()不会正确打印任何内容。

本文链接:https://www.f2er.com/3155286.html

大家都在问