怎么进行字符串赋值?C语言

作者&投稿:尉迟彪 (若有异议请与网页底部的电邮联系)
c语言字符串赋值~

//
string[500]="abcdefg";
//是将字符串"abcdef"赋值给字符数组中string[500]这个
元素
,先不说string[500]已经越界了.
单单是string[500]只能存放一个
字符
,但你这里却要将一串字符串赋值给他.当然会
错误
.像你说的在
定义

初始化
是对的.如果定义后要进行赋值.就用string.h中的strcpy()函数,将"abcdefg"复制到字符串string中.
代码
如下:
#include

#include

int
main()
{
char
string[500];
//
string[500]="abcdefg";
strcpy(string,"abcdefg");
//将
字符串常量
赋值给字符数组return
0;
}

A,指针s没有赋值,不指向任何地址。
B,s是指针,“ABCDE”是字符串常量。
C,s大小为5个字节,“ABCDE”字符串需要6个字节,注意结束符。
D,s大小5个字节,赋5个字符,应是没有问题的。

在C语言中,字符串的赋值主要有两种方法,第一种是通过指针的方式直接赋值,第二种是通过数组直接赋值。

1、指针式赋值。

通过程序的运行情况,可以知道:char *p = "hello";这种字符串的赋值方式是完全没有问题的。要理解这种赋值方式,首先得理解双引号(特别注意:这个是双引号,不要赋值的时候给弄了个单引号)在这个语句中做了什么工作。双引号主要做了3个工作,分别是:

(1)申请了空间(在常量区),存放了字符串。

(2)在字符串尾加上了“\0”。

(3)返回地址。

这里所返回的地址就赋值给了char *类型的指针变量p。

2、通过字符数组直接把字符串赋值。程序如下:

扩展资料:

字符串赋值需要注意的一些问题:

直接把字符串赋值给数组名(也就是数组首元素的首地址)是不行的。

会出现以下错误:

参考资料:

百度百科--字符串赋值



字符串赋值的方法:

1、定义的时候直接用字符串赋值
如:char a[10]="hello";
注意:不能先定义再给它赋值,如char a[10]; a[10]="hello";这样是错误的。

例如: 
main() 

{ char s[100]; 

strcpy(s, "The writer would like to thank you for" 

"your interest in his book. He hopes you" 

"can get some helps from the book."); }

2、对数组中字符逐个赋值

字符串可以赋值给字符指针变量,或者将字符串用字符数组保存。

如:char a[10]={'h','e','l','l','o'};

3、利用strcpy

strcpy是一种C语言的标准库函数,strcpy把含有'\0'结束符的字符串复制到另一个地址空间,返回值的类型为char*。

如:char a[10];

strcpy(a, "hello");

扩展资料

字符串赋值的注意事项:

1、在使用指针的时候,指针可以自增,而数组名不能自增编译器给数组分配了空间。

2、在指针自增的时候,编译器会自动识别类型,比如指针是指向int型的,想获取下一个的地址时,指针直接p++就行了,不要多此一举的p+4了。

3、在void指针使用的时候,不能使用指针运算,因为void型编译器不能识别类型的长度(即指针所指对象的体积),p++这样就是不合法的,即不能进行数学运算,也不能使用*取值操作,想使用必须转换为其它的类型。

参考资料来源:百度百科——字符串赋值



一、题目大意为输出一个已知的字符串。

解题思路:

定义一个字符数组,并用“初始化列表”对其赋以初值

用循环逐个输出此字符数组中的字符

#include <stdio.h>

int main()

{ char c[15]={'r',' ','i','g',' ','g',

' ','h','t','u',};

int i;

for(i=0;i<15;i++)

printf("A=%c",c[i]);

printf("
");

return 0;

}

扩展资料:

相关知识点:字符数组的输入输出可以有两种方法。

(1)逐个字符输入输出(%c)

(2)整个字符串一次输入输出(%s)

输出的字符中不包括结束符’\0’。用%s输出字符串时,printf函数中的输出项是字符数组名,不是数组元素名。如果一个字符数组中包含多个’\0’,则。遇第一个’\0’时输出就结束

用scanf函数输入一个字符串,scanf函数中的输入项c是已定义的字符数组名,输入的字符串应短于已定义的字符数组的长度。

(3)在C语言中,是将字符串作为字符数组来处理的,关心的是字符串的有效长度而不是字符数组的长度。为了测定字符串的实际长度,C语言规定了字符串结束标志’\0’。

(4) ’\0’代表ASCII码为0的字符,从ASCII码表可以查到,ASCII码为0的字符不是一个可以显示的字符,而是一个“空操作符”,即它什么也不做。用它作为字符串结束标志不会产生附加的操作或增加有效字符,只起一个供辨别的标志

(5)字符的不同写法

(6) 字符串结束标志



在C语言中,字符串是以字符数组形式存储的,并约定以\0作为结束符。所以字符串赋值不能直接用=赋值,而是要用专门的函数进行复制,在C语言中,这个函数为strcpy。

1 函数名 :
strcpy
2 形式:
char * strcpy(char *dst, const char *src);
3 头文件:
string.h
4 功能:
将src中的字符串复制到dst中,并返回dst的首地址。
5 示例:
char buf[100], buf1[100];
strcpy(buf, "test");// 将字符串test赋值到buf。
strcpy(buf1, buf); //将字符串buf的值,赋值给buf1.

string赋值,需要加个#include<string.h>
然后用strcpy
strcpy(A,"right");来完成,试看吧
会有return, return a得值所以也可以写成
printf("%s\n",strcpy(A,"right"));

因为string 或者 char array 不能直接赐值,
所以要用<string.h>里的工具来完成。


c++中怎么把一个字符串赋给一个变量
对于char数组型的变量,在声明时可以直接赋值,如char str[] = "abcde",对于char数组型的变量,在非声明的时候赋值时,不能直接赋值,如char str[64];str = "abcde";是不允许的,需要借助strcpy函数进行赋值,需要使用头文件#include <string.h>。使用方法:char str[64];strcpy(str, "abcde")...

给字符串赋值。可以这样写吗 char s[5];s={'A','B','C'}
可以这样写:char s[5]={ 'A','B','C',0 };char s[5]={ "ABC" };char s[5]; strcpy(s,"ABC");char s[5]; s[0]='A'; s[1]='B'; s[2]='C'; s[3]=0;这几种写法效果都一样

请问能不能把字符串的值赋值给另一个字符串??能的话要怎么做??
可以的 你利用strcpy()来做,他接受2个参数,把后面的参数拷贝的前面的参数中,用的时候包含string.h这个头文件

下面能正确进行字符串赋值操作的是
C是正确的 A. char s[5]={"ABCDE"}; “ABCDE"占用空间是6字节,超出s的长度了 B. char s[5]={ ′A′, ′B′, ′C′, ′D′, ′E′}; 没有字符串结束的终结符,s不能当字符串使用 C. char *s;s="ABCDE"; 正确 D. char *s;char a; scanf("%s",&s); s...

...如何把字符串,如“abcdef”赋值个一个变量,怎么定义该变量??
其实用c也很简单的,c里有用于处理字符串的头文件string.h strcat()函数就是将两个字符串连接 不过在c里面是没字符串变量这个概念的,用字符指针来实现 下面是程序 include"stdio.h"include"stdlib.h"include"string.h"main(){ char send = "whatyouwant";\/*用你想要的东西代替whatyouwant稍改一...

vb怎么定义字符串数组?怎么赋值?
定义字符串数组: dim aa(x) as string '其中X是数组里元素数量,X从0开始。赋值: 一般用循环,如: For ...Next语句 。每次使用ReDim语句都会使原来数组中的值丢失,可以在ReDim语句后加Preserve参数来保留数组中的数据,但使用Preserve只能改变最后一维的大小,前面几维大小不能改变。使用动态数组...

c++怎么给一个string赋值
include "stdafx.h"include include include"string" \/\/操作字符串必须包含的头文件 using namespace std;void main(){ string s1 = "aaaaa";string s2("bbbbb");string s3 = s2; \/\/通过拷贝构造函数,初始化s3 string s4(10, 'a');string s5 = "hello"+"world"; \/\/错误 cout << "...

java中 输入字符串怎么给String数组赋值
java中输入的字符串主要是使用scanner类来接收用户从键盘输入的数值,然后建立一个字符串数组来赋值,代码如下:public class ceshi {public static void main(String[] args){String[] s = new String[3];\/\/字符串数组Scanner sc = new Scanner(System.in);接收用户从键盘输入的字符串String str =...

c语言 如何把一个字符串的值赋给另一个字符串?
你用字符数组的话,用循环把每一个字符数组单元都赋给另一个字符数组单元,你这样直接用数字赋值肯定是错的

C语言字符串赋值操作
字符串指针只是一个指针,就像你上面 的 A 里面的 s 没有初始化,那么你调用读串 函数 数据要写到哪里呢? 不知道吧 ,因 为s 不知道 指向哪里。char *s; s="ABCDEF"; 这又是什么意思呢? 这个操作 是将一个 串("ABCDEF" 在内存中已经存在了),只是将这个串的首地址 赋给 s...

中牟县18294752744: c语言字符串赋值 -
嵇飞健胃: #include <stdio.h> #include <stdlib.h> #include <string.h>int main(int argc, char *argv[]) {char buf[255];scanf("%s", buf);for(int i = 0; i < strlen(buf); ++i){buf[i] += 4;}printf("%s\n", buf);exit(EXIT_SUCCESS); }是比较标准的程序退出写法,可以用return 0替换的 stdlib.h头文件里有exit()的定义

中牟县18294752744: c语言 字符串之间如何赋值? -
嵇飞健胃: 全是错误的—— cahr a[100],b[100];//这样才能承载字符串,char a,b;这样a、b只能存入一个字符 scanf("%s",a);//写scanf("%s",&a);也可以 strcpy(b,a);//只能这样调用库函数拷贝,因为C没有字符串变量,也就没有字符串操作运算符.

中牟县18294752744: 怎么进行字符串赋值?C语言
嵇飞健胃: string赋值,需要加个#include&lt;string.h&gt; 然后用strcpy strcpy(A,"right");来完成,试看吧 会有return, return a得值所以也可以写成 printf("%s\n",strcpy(A,"right")); 因为string 或者 char array 不能直接赐值, 所以要用&lt;string.h&gt;里的工具来完成.

中牟县18294752744: C语言字符串赋值操作 -
嵇飞健胃: 首先要弄清楚 什么是 字符串指针,还有什么叫字符数组.字符串指针只是一个指针,就像你上面 的 A 里面的 s 没有初始化,那么你调用读串 函数 数据要写到哪里呢? 不知道吧 ,因 为s 不知道 指向哪里.char *s; s="ABCDEF"; 这又是什...

中牟县18294752744: C语言怎样给字符数组赋值 -
嵇飞健胃: 给字符数组赋值分两种情况,单字符赋值和字符串赋值. 单字符赋值,可通过数组下标方式或指针方式,引用数组元素,进行赋值,如: char a[10]; char ch='a'; for( i=0;i<10;i++ )a[i]=ch+i ; //可通过数组下标引用数组元素,完成赋值 char *p; for...

中牟县18294752744: C语言关于字符串的赋值. -
嵇飞健胃: d[3]=c[10];------------------这里错误,根本不存在d[3],数组的下标是从0开始的.,因为前面的a[10]是个字符串,----------------- a[10]不是字符串,是单个字符.把d[3]换成二维数组? -----------------C语言中变量的类型是不能改变的.

中牟县18294752744: C语言.编写函数,实现对字符串的赋值运算,编写main函数 -
嵇飞健胃: 如果是赋值运算要用C++ 的运算符重载,如果只是实现赋值操作还是可以的,例如:#include <stdlib.h>#include <stdio.h> void main() { void mystrcpy(char *,char *); char res[20],obj[20]; mystrcpy(res,"abxc"); mystrcpy(obj,res); printf("%s\n%s",res,obj); } void mystrcpy(char *obj,char *res) { int i=0; while(res[i]) { obj[i]=res[i]; i++; } obj[i]=0; }

中牟县18294752744: C语言 如何将数字赋值给字符串?
嵇飞健胃: #include<stdio.h> void main() { int i; char a[100]; for(i=0;(a[i]=getchar())!='\n';i++) ;/输入回车时停止,输的时候,可以使是数字. a[i]='\0'; puts(a);/输出你输入的的 } 你那个元素输的是数字,这个字符串中的那个元素就是那个数字; 例如: 你输入:7235675hsfh 输出:7235675hsfh a[0]='7';a[1]='2'; a[2]='3'........a[7]='h'..........

中牟县18294752744: c语言字符串相互赋值 -
嵇飞健胃: 字符串赋值应该使用 strcpy 比如#include <stdio.h>#include <stdlib.h>#include <string.h> void main(){ char *str1="hello"; char *str2; strcpy(str1,str2) }

中牟县18294752744: c语言中字符窜怎么赋值? -
嵇飞健胃: 请点击输入图片描述 代码拷贝: #include "stdio.h" #include <string.h> int main(int argc,char *argv[]){char a[]="我们都在学习C语言";//这样可以定义char b[50],i=0;strcpy(b,a);//把a拷贝到b(要包含头文件string.h)//不用上一句也可以如下写//while(b[i++]=a[i]);printf("%s\n",b);return 0; }

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网