在C语言中,字符串是是一个一个字符连着存储在内存单元中的,所以,要用字符数组的形式,char a[] = "kao ni ";这种形式来定义字符串常量,关于你说的第二点也是没有这总形式的,最接近的也是用指针的形式,也就是 char *a = " abc",这种形式,把“abc”字符串的首地址付给指针变量a,关于指针的问题,不是一两句话能解释的,建议你可以看下相关的书籍。其实这两种形式输入换汤不换药,本质上是一样的,只是表现形式不相同而已。二者完全等价。
网站建设哪家好,找创新互联!专注于网页设计、网站建设、微信开发、微信平台小程序开发、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了金塔免费建站欢迎大家使用!
代码功能:
1、输入任意行数的内容(如果你想限制最多10行,自己加个变量计数好了)。
2、不想输入时,新行直接回车,会刷新显示统计个数。
#include stdio.h
#include stdlib.h
#include string.h
#include malloc.h
typedef struct strs
{
char str[100];
struct strs *next;
}STRS;
void contWord(char *str);//对字符串大小写字母计数
void intput(STRS **strsHead,STRS **strsTail);//输入字符串,并显示统计结果(每输入完一行回车时,刷新数据)
void prfStrs(STRS *strsHead,int tj);//打印字符串及统计结果
int dCon=0;//大写字母计数
int nCon=0;//数字计数
int main()
{
STRS *strsHead=(STRS *)malloc(sizeof(STRS));
strsHead-next=NULL;
STRS *strsTail=NULL;
intput(strsHead,strsTail);
return 0;
}
void prfStrs(STRS *strsHead,int tj)//tj=1输出统计结果;tj=0不输出统计结果
{
while(strsHead-next!=NULL)
{
printf("%s\n",strsHead-next-str);
strsHead=strsHead-next;
}
if(tj==1)
{
printf("大写字母个数:%d\n",dCon);
printf("数字输入个数:%d\n",nCon);
}
}
void contWord(char *str)
{
int len=strlen(str),i;
for(i=0;ilen;i++)
{
if(str[i]='A' str[i]='Z')
dCon++;
if(str[i]='0' str[i]='9')
nCon++;
}
}
void intput(STRS **strsHead,STRS **strsTail)
{
STRS *strsNew;
char c;
while(1)
{
strsNew=(STRS *)malloc(sizeof(STRS));
memset(strsNew-str,0,100);
if(strsNew-str[0]==0)
{
c=0;
c=getchar();
if(c=='\n')
{
system("cls");
prfStrs(*strsHead,1);
break;
}
else
{
strsNew-str[0]=c;
}
}
gets(strsNew-str[1]);
strsNew-next=NULL;
if((*strsHead)-next==NULL)
(*strsHead)-next=strsNew;
else
(*strsTail)-next=strsNew;
*strsTail=strsNew;
contWord(strsNew-str);
}
}
在c语言中,存在字符常量与字符串常量,举个例子来说是最明了的
chuar table[]={'U','S','A'}这是字符常量,字符常量用单引号表示。
chuar table[]={"USA"}="USA"这是字符串常量。字符串常量用双引号表示。其中,chuar table="USA"与chuar table={'U','S','A',\0}是等价的。
C语言就是函数,一个C语言程序至少有一个函数,一个函数可以没有或有多个参数,但一个函数一定有且只有一个返值。例如:
程序1:
main()
{
}
上述程序的功能就是什么也不做,但也要有一个主函数main()。主函数也有返回值,默认为空void。return语句可以省略。
程序2:
int
main()
{
printf("Hello,word!");
return
1;
}
上述程序的功能是在屏幕上输出一句话:Hello,word!并向操作系统返回一个返回值1.第一个函数main()函数要求返回一个短整型值,返回语句return不能省略。第二个函数是调用的标准库函数printf()它有一个参数是字符串常量。它的功能就是实现输出。
使用函数可以把一个大的程序分割成多个功能模块,这样就可以多人分工合作完成一个程序的编写,也可以减少不必要的重复工作,如有多个程序需要实现同样的功能,那么针对这个功能编写一个函数,再需要时直接调用就行了,如上面的printf()函数。可以被任何一个程序调用而不用重写代码。
函数分为自定义函数和标准库函数:区别就是处定义函数是自己编写的,而标准库函数是由别人写的,只能知道其函数接口(即函数需要哪些参数,函数实现什么功能,函数的返回值)以方便调用。而不知道它的内部代码。
函数返回值的意思是将函数实现的结果返回给调用者。
按标准来说,C的main函数是需要有返回值的。标准中main函数返回类型是int的,所以需要一个返回值。但是由于历史原因,很多地方可以看到没有返回值的main。
比如直接main()或者说void main() 但是这样一般编译器也不会认为错误,不过建议还是写标准的C的main函数,最好有一个返回值,0表示正常退出。
扩展资料:
需要说明的是:
1、一个C语言源程序可以由一个或多个源文件组成。
2、每个源文件可由一个或多个函数组成。
3、一个源程序不论由多少个文件组成,都有一个且只能有一个main函数,即主函数。是整个程序的入口。
4、源程序中可以有预处理命令(包括include 命令,ifdef、ifndef命令、define命令),预处理命令通常应放在源文件或源程序的最前面。
5、每一个说明,每一个语句都必须以分号结尾。但预处理命令,函数头和花括号“}”之后不能加分号。(结构体、联合体、枚举型的声明的“}”后要加“ ;”。)
6、标识符,关键字之间必须至少加一个空格以示间隔。若已有明显的间隔符,也可不再加空格来间隔。
参考资料来源:百度百科-函数
C语言中,字符串常量"1234123"的长度是8,因为C语言要求字符串常量以'\0'结尾,但字符'\0'不能显示。
如果用strlen()函数计算"1234123"长度,返回值为7,因为strlen设计为计算字符串结尾字符'\0'之前的字符个数。
如果用字符串常量初始化字符数组,需要用字符串实际长度,而不能直接用strlen函数的返回值,即:char s[8] = "1234123";如果用char s[7] = "1234123";数组s就溢出了。