指针函数的++(极易犯错误)

#include<stdio.h>

#include<stdlib.h>

#include<string.h>
//实现字符串的拷贝
int main11()
{
	char a[]={"dajdjaskd"};
	char b[267];
	int i;
	for(i=0;a[i]!=‘\0‘;i++)
	{
		*(b+i)=*(a+i);
	}
	b[i]=‘\0‘;//这个很重要呢,一定要加,否则这个结果就是乱码
	printf("b== %s\n",b);

	system("pause");
}

char copy_str(char *from,char *to)
{
	char *myfrom=from;
	char *myto=to;
	while(*myto++=*myfrom++);
	printf("from: %s\n",from);
}
char copy_str1(char *from,char *to)
{

	while(*to++=*from++);//字符串结束符 ‘\0‘ 的 ASCII 值 正好是 0。 所以 用 0 判断 和 用 ‘\0‘ 判断,结果一样。
	printf("from: %s\n",from);
}
 int main()
 {
	 char a[]={"sada"};
	 char b[128];

	 copy_str(a,b);
	 printf(" b : %s\n",b);

	  copy_str1(a,b);
	 printf(" b : %s\n",b);

	system("pause");
 }
  •   关于字符串有几个重点问题呢
  • 字符串循环赋值的时候,可能不能够赋值‘\0’ 需要手工加上去,要不然肯定出错。
  • 指针循环实现++的时候,输出的时候,指针指向了‘\0’, 所以//不要轻易改变形参的值, 要引入一个辅助的指针变量. 把形参给接过来.....
时间: 2024-08-08 14:23:25

指针函数的++(极易犯错误)的相关文章

[golang 易犯错误] golang 局部变量初始化:=的陷阱

我们知道,golang中局部变量初始化方法(使用“:=”创建并赋值),让我们在使用变量时很方便.但是,这也是易犯错误的地方之一.特别是这个初始化符还支持多个变量同时初始化,更特别的是它还支持原有变量赋值和新变量创建并赋值同时进行!也就是说如果有部分变量不存在的而另外一些是已声明好的,用:=来初始化部分变量同样有效.这其实也没什么,更方便了嘛.但是,go的好多语句还支持局部前置语句,比如在if,for,switch等语句的初始化条件语句中.在这些地方,当你以为使用了原有变量的时候,实际上go已经为

Python 基础教程 和 易犯错误(文本处理)

一:基础教程 (1)文件I/O  非常类似于 c语言:IO在计算机中指Input/Output,也就是输入和输出.由于程序和运行时数据是在内存中驻留,由CPU这个超快的计算核心来执行,涉及到数据交换的地方,通常是磁盘.网络等,就需要IO接口. spath="D:/download/baa.txt" f=open(spath,"w") # Opens file for writing.Creates this file doesn't exist. f.write(&

编程中易犯错误汇总:一个综合案例.md

# 11编程中易犯错误汇总:一个综合案例 在上一篇文章中,我们学习了如何区分好的代码与坏的代码,如何写好代码.所谓光说不练假把式,在这篇文章中,我们就做一件事——一起来写代码.首先,我会先列出问题,然后要求读者自己写一份答案:然后,我会给出我写的代码:最后,我们还会以这个问题为例,讨论编程中常见的错误. ## 1 问题描述 在[这个](http://wiki.openhatch.org/index.php?title=Scrabble_challenge)页面中,有一道Python相关的练习题,

样式易犯错误

1,可使字和图标对其 .logo_right img{ margin-right:10px; vertical-align: middle; 如: 2,a标签样式 .nav a:link ,.nav a:visited{ color:rgb(255,255,255); font-size:20px; text-decoration:none; } .nav a:hover ,.nav a:active{ color:#C00; text-decoration:none; font-size:20

初始化赋值时a = b = 常数 的易犯错误

1 #include <stdio.h> 2 #include <stdlib.h> 3 int main() 4 { 5 int a,b; a=b=2; //成功 6 //int a = b = 2;失败 7 printf("%d %d",a,b); 8 system("pause"); 9 return 0; 10 } 新手注意直接初始化变量的 int a = b = 2这样的写法会导致编译失败. 如何能让这个语句正确呢,那就在前面声明好

Python初学的易犯错误

当初学 Python 时,想要弄懂 Python 的错误信息的含义可能有点复杂.这里列出了常见的的一些让你程序 crash 的运行时错误. 1)忘记在 if , elif , else , for , while , class ,def 声明末尾添加 :(导致 “SyntaxError :invalid syntax”) 该错误将发生在类似如下代码中: ? 1 2 if spam == 42     print('Hello!') 2)使用 = 而不是 ==(导致“SyntaxError: i

&lt;06&gt;变量使用前易犯错误总结+if语句介绍及基本格式+if-else语句及嵌套+if语句的高级用法+if语句的使用注意点+arc4random_uniform 函数导入一个头文件&lt;stdlib.h&gt;+

1)变量要初始化 -1 0  ,或者1 依据程序而定 ---------------------------------- if语句介绍及基本格式 分支语句结构 1)if 格式: if(表达式/常量/变量){ 语句块1; } 原理: 1)先计算小括号中的表达式的值 真(1) 会执行 大括号中的语句 假(0) 不会执行 大括号中的语句 2) switch 1 #include <stdio.h> 2 3 int main(int argc, const char * argv[]) { 4 5

Java开发者易犯错误Top10

摘要:在Java中,有些事物如果不了解的话,很容易就会用错,如数组转换为数组列表.元素删除.Hashtable和HashMap.ArrayList和LinkedList.Super和Sub构造函数等,如果这些对你来说是陌生的,你可以在本文中了解它们. 本文总结了Java开发者经常会犯的前十种错误列表. Top1. 数组转换为数组列表 将数组转换为数组列表,开发者经常会这样做: [java] view plaincopy List<String> list = Arrays.asList(arr

C++设计实现算法时易犯错误

1.未初始化 指针未初始化为NULL,造成判断条件出错 数值未初始化为0,造成数组超界,内存泄漏 2. long long输入时 lld or I64d 写成d一定出错 3.gcc编译报错:程序中有游离的‘\357’‘\273’‘\277’等 感谢http://www.cnblogs.com/lidp/archive/2009/06/17/1697886.html 造成的原因主要有两个:1. 程序(*.c,*.h)中使用了中文的标点符号(全角),比如:,},+.改成英文的标点半角符号就行了.甚至