‘壹’ 如何用c语言来表达一个字符串
1)在串值后面加一个不计入长度的结束标记字符,比如'\0'来表示串值的终结
初始化一个字符串的方法如下,在最后添加'\0'
char str[] = {'I','a','m','h','a','p','p','y','\0'};
也可以直接使用字符串常量初始化字符数组(系统自动加上'\0'),这种方法符合人们的习惯。
char str[] = "I am happy";
或者
char str[] = {"I am happy"};
注意:不能使用下面的赋值方式:
char str[20];
str = "I am happy";
但可以用字符指针指向这个字符串:
char *str;
str = "I love China";
(2)将实际串长度值保存在数组0的下标下
#define MAXSIZE 20 //数组的长度
typdef char String[MAXSIZE+1];
初始化字符串的方法:
String t;
StrAssign(t,"I am happy");
int StrAssign(String T,char *chars)
{
T[0] = strlen(chars); //下标为0存放数组长度
for(i=1;i<=strlen(chars);i++) //下标位置从1开始存放数据
{
T[i] = *(chars+i-1);
}
return 1;
}
(3)使用结构体类型(自定义类型)
#define MAXSIZE 20
typedef struct{
char ch[MAXSIZE];
int len;
}String;
其中:MAXSIZE表示串的最大长度,ch是存储字符串的一维数组,len是字符串的长度
初始化函数示例:
String t;
StrAssign(&t,"I am happy");
int StrAssign(String *t,char *chars)
{
int i;
if(strlen(chars)>MAXSIZE+1) //字符串的长度大于数组的长度,操作失败,返回0
return 0;
for(i=0;i<strlen(chars);i++)
{
t->ch[i] = *(chars+i);
}
t->len = strlen(chars); //数组的长度
return 1; //返回1,操作成功
}
说明:这里的StrAssign函数的参数t使用的是指针,是因为结构体变量做做形参,用法和普通变量一样属于值传递方式,在子函数中要给t赋值,所以输入的是t的指针。与之对比的是(2)子函数中T是数组,传入的是数组的首地址(改变形参也就改变了实参)。
————————————————
版权声明:本文为CSDN博主“chenkaibsw”的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/chenkaibsw/article/details/78957944
‘贰’ C语言字符串
若你的编译器支持中文字符输出,则你可把输出语句里的英文字符改用中文。
#include<stdio.h>
int main()
{
char s[80];
int i;
printf("input a string (upper-case latters only) please:\n");
loop: gets(s);
for (i=0;i<strlen(s);i++){
if (s[i]>='A' && s[i]<='Z') continue; //大写判断
else {
printf("re_input a string (upper-case latters only) please:\n");
goto loop; //转向语句
};
};
printf("output reversed:\n");
for (i=strlen(s)-1;i>=0;i--) printf("%c",s[i]);
return 0;
}
‘叁’ C语言字符串类
#include<stdio.h>
#include<string.h>
intmain()
{
chara[10][100];
intscore[10],i,j,temp,stemp;
for(i=0;temp;i++)
{
gets(a[i]);
temp=strlen(a[i]);
}
for(i=0;strlen(a[i]);i++)
{
score[i]=0;
for(j=0;j<strlen(a[i]);j++)
{
if(a[i][j]>='a'&&a[i][j]<='z')
stemp=a[i][j]-96;
if(a[i][j]>='A'&&a[i][j]<='Z')
stemp=a[i][j]-64;
score[i]+=stemp;
}
}
for(i=0;strlen(a[i]);i++)
printf("%d ",score[i]);
return0;
}
‘肆’ c语言中字符串是%什么
如果用在scanf或printf中的格式字符串中:
%d是代表整型数据,%f代表float型数据,%c代表字符型数据,%s代表字符串
具体可以网络scanf或printf
‘伍’ c语言如何表示字符串
C语言中并没有字符串这个类型,表示字符串时,需要使用字符数组,或字符指针。即char型数组,或char *指针。
如
char str[100] = "hello world";
就是一种字符串的表示方法。
另外,在C语言中,约定用字符数组表示字符串时,以'\0'为字符串结尾,即ascii码0。
‘陆’ c语言字符串代码
to Earthg:
scanf不能实现含多个子字符串的字符串的读取。
to xbvl3vosrs:
C++中也没有大写的String类,而且C++标准库STL中的小写string类中也没有Split方法。
---------------------
C语言提供库函数strtok,可以实现字符串分割。
给出MSDN范例代码如下,注释已经适当添加和修改:
/* STRTOK.C: In this program, a loop uses strtok
* to print all the tokens (separated by commas
* or blanks) in the string named "string".
*/
#include <string.h>
#include <stdio.h>
char string[] = "A string\tof ,,tokens\nand some more tokens";
char seps[] = " ,\t\n";
char *token;
void main( void )
{
printf( "%s\n\nTokens:\n", string );
/* Establish string and get the first token: */
token = strtok( string, seps ); // 这里获得第一个子串
while( token != NULL )
{
/* While there are tokens in "string" */
printf( " %s\n", token ); // 如果你要存放每个子串进入二维数组,那么这一句就改成字符串赋值
// 使用strcpy函数。
/* Get next token: */
token = strtok( NULL, seps ); // 这里从第二个子串开始依次获得每一个子串
}
}
-----------------------------------
‘柒’ 在c语言中怎样定义字符串
在c语言中定义字符串:
C语言中用字符型CHAR来表示存储字符,没有C++里面的可以单独的字符串类型String;
所以C里面使用字符数组和字符指针来实现字符串功能;
C的字符数组只能在定义时一起赋值,以后只能给单个元素一一赋值;
char string0[10];
char string1[]="prison break";
char string2[100]="michael scofield";
1句表示定义个长度为10的字符串,但未赋值,2句表示定义了一个字符数组string1,并进行初始化,使得其长度自动为13(字符串”prison break"中的字符个数加上结尾的'