作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我尝试使用下面的代码在 C 中复制字符串,但没有得到正确的结果。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(void){
char *string1;
char *string2 = "abcdefghijk";
char *ptr = string2;
unsigned int no_of_chars =0;
while(*ptr++ !='\0'){
no_of_chars++;
}
string1 = malloc(sizeof(char)*(no_of_chars+1));
while(*string1++ = *string2++);
printf("string2=%s\n",string2);
printf("string1=%s\n",string1);
return 0;
}
我使用 MinGW 编译器得到以下结果:
string2=string2=%s
编辑:好的,更改了代码,下面的代码可以工作。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(void){
char *string1;
char *string2 = "abcdefghijk";
char *ptr = string2, *ptrsrc = string2;
unsigned int no_of_chars = 0;
while(*ptr++ !='\0'){
no_of_chars++;
}
char *ptrdst = string1 = malloc(sizeof(char)*(no_of_chars+1));
while(*ptrdst++ = *ptrsrc++);
printf("string2=%s\n",string2);
printf("string1=%s\n",string1);
return 0;
}
最佳答案
运行 while(*string1++ = *string2++);
后,string1
指向第一个字符串的末尾,string2
指向第二个字符串的末尾。
也就是说,它们都指向各自空终止符之后的下一个字节,因此 printf
看到两个垃圾字符串(可能是空白)。
您可以使用不同的变量来保存字符串中的起始位置和当前位置,例如:
char *pstr1 = string1;
char *pstr2 = string2;
while(*pstr1++ = *pstr2++);
现在,pstr1
和 pstr2
指向超出其字符串末尾的一个字符,但 string1
和 string2
仍然指向开始。
关于c - 字符串复制例程在 C 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41946788/
我最近购买了《C 编程语言》并尝试了 Ex 1-8这是代码 #include #include #include /* * */ int main() { int nl,nt,nb;
早上好!我有一个变量“var”,可能为 0。我检查该变量是否为空,如果不是,我将该变量保存在 php session 中,然后调用另一个页面。在这个新页面中,我检查我创建的 session 是否为空,
我正在努力完成 Learn Python the Hard Way ex.25,但我无法理解某些事情。这是脚本: def break_words(stuff): """this functio
我是一名优秀的程序员,十分优秀!