字符数组拷贝与strcpy函数

代码:

char str1[10],str2[10];
    for (int i=0;i<10;i++)
    {
        str1[i]=‘a‘;
    }
    strcpy(str2,str1);

让找出错误的地方。

先来看下strcpy函数:

使用格式:char* strcmp(char* buffer,char*str)
功 能: 把从str地址开始且含有NULL结束符的字符串复制到以buffer开始的地址空间,buffer地址空间中必须有足够的空间来容纳str的字符串。 转自此文

所以上面代码错误的地方就是str1中没有结束符,VS2010下运行出现错误:Run-Time Check Failure #2 - Stack around the variable ‘str1‘ was corrupted.

原文地址:https://www.cnblogs.com/Tang-tangt/p/9338727.html

时间: 2024-10-07 11:42:38

字符数组拷贝与strcpy函数的相关文章

对一个字符数组连续用gets函数出现的问题(缓冲区内容补充)

昨天调试程序(见下面代码)遇到下面一个问题: #include<stdio.h> int main() { int i = 1; while(i) { char str[100]; printf("please input a str:\n"); gets(str); puts(str); printf("continue:1,break:0\n"); scanf("%d",&i); } return 0; } 咦!!!我还没

C语言学习笔记:19_数组-字符数组与字符串(常用字符串函数)

/* * 19_数组-字符数组与字符串.c * * Created on: 2015年7月7日 * Author: zhong */ #include <stdio.h> #include <stdlib.h> #include <string.h> /** *一:字符数组:就是存放字符的char[]数组 * 由于c语言中没有像java,C#中的String(字符串),只有存放字符 的字符型数组当字符串使用(java中的String类也是对字符数组进行封闭的). * *

字符串字符数组

1 #define _CRT_SECURE_NO_WARNINGS 2 #include <stdio.h> 3 #include <stdlib.h> 4 5 int main() 6 { 7 8 /* 9 字符串的赋值: 10 给 char* 类型的字符串赋值,可以直接使用 "=" 号 11 给 char[] 类型的字符串赋值,需要使用 strcpy 函数 12 13 字符串的特点: 14 需要明白的一点就是字符串以\0结尾, 没有\0就不是字符串 15 只

字符数组的基本操作

#include <stdio.h>#include <string.h> void main(){ /**   char ch[]="china\nbeijin";   char ca='a'; char c[12];   gets(c); puts(ch);   puts(c);   */ char ch1[30]={"china beijing"};    char ch2[]={"CaoYangQu"};    c

JavaScript强化教程——数组的基本处理函数

本文为 H5EDU 机构官方 HTML5培训 教程,主要介绍:JavaScript强化教程 —— 数组的基本处理函数 Array.push();添加元素在数组最后,并返回数组新的长度 Array.pop();删除最后一个元素,减小数组长度,并返回最后一个元素 Array.unshift();在数组前面添加元素 Array.splice(n,x); //n数组下标 x删除几个 从n开始删除 (x=1时,表明删除当前下标为n的元素) indexOf() 搜索整个数组中具有给定制的元素,返回找到的第一

C语言-字符串(单个字符)和字符数组

一.字符串(单个字符)和字符数组的定义 1.单个字符的定义 char i = ‘x’ (单个字符的定义) 字符串创建后为常量无法修改 2.字符数组的定义 char i [4]=”xxxx”; char i []=”xxxx”; char i [4]={‘x’’x’’x’’x’}; 其中定义的数组的元素数要比实际赋值的数量多一,用于存放\0位置 字符数组只有在定义时才能将整个字符串一次性地赋值给它,一旦定义完了,就只能一个字符一个字符地赋值了. 二字符串(单个字符)和字符数组输入 1.scanf函

关于strcpy()函数在拷贝字符串数组的时候出现的大小不匹配问题和数组值改变问题

问题的来源是自己写的一个测试代码: #include <iostream> using namespace std; int main() { char a[1]; a[0] = 'a'; a[1] = 'b'; char b[1]; b[0] = 'c'; b[1] = 'd'; strcpy(a, b); cout<<"拷贝之后:a[0] = "<<a[0]<<" a[1] = "<<a[1]<&

关注C++细节——字面值初始化字符数组及字符串拷贝注意

char carr[] = "author:CSDN-iaccepted"; 此时,carr数组中元素的个数为21,最后一个位置用来存放空字符'\0'. 所以如果写成carr[21] = "author:CSDN-iaccepted";就是错误的. int clen = strlen(carr); int size = sizeof(carr); 这时候得到的clen = 21,size= 22.这就是因为strlen统计串中字符的个数,不计算最后的空字符,但是si

通过编写字符复制函数strcpy函数学编程

首先我们先来开一下标准函数中的strcpy长什么样子 C语言标准库函数strcpy,把从src地址开始且含有'\0'结束符的字符串复制到以dest开始的地址空间. 原型声明:char *strcpy(char* dest, const char *src); 头文件:#include <string.h> 和 #include <stdio.h> 功能:把从src地址开始且含有NULL结束符的字符串复制到以dest开始的地址空间 说明:src和dest所指内存区域不可以重叠且des