1.字符串常量
char *name="sjsj";
系统分配内存 字长+1 要加'\0'
2.
char *address=NULL;
address=(char *)malloc(10*sizeof(char));
if(address==NULL){
exit(EXIT_FAILURE);
}
scanf("%s",address);碰见空格默认结束
//realloc重新分配内存空间 将原来的内存中的内容复制 然后在其后加内存(用于内存不够时)
address=(char *)realloc(address, 12*sizeof(char));
if(address==NULL){
exit(EXIT_FAILURE);
}
//只要是malloc realloc 分配内存空间 必须手动释放
free(address);
数组和指针的区别:
1.定义数组 系统会自动为这个数组分配内存空间
2.指针方式 需要自己手动申请内存空间 malloc realloc calloc
需要自己去释放内存 free
数组和指针可以相互使用
*/
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
int length(char*a,int n);
int main(int argc, const char * argv[]) {
int count = 1;
char *string = NULL;
string= (char*)malloc(1*sizeof(char));
if (string == NULL) {
exit(EXIT_FAILURE);
}
printf("请输入:\n");
while(1){
char c = getchar();
//判断是否结束
if (c == '\n') {
string[count-1]='\0';
break;
}
string= realloc(string, count+1);
if (string == NULL) {
free(string);
exit(EXIT_FAILURE);
}
string[count -1] = c;
count++;
}
int m= length(string,count);
printf("%d",m);
return 0;
}
// i am a student
int length(char*a,int n)
{
int number = 0;
bool start = false;//单词状态 开始或结束
for(int i = 0;a[ i ]!='\0';i++)
{
char c=a[ i ];
if ((c >='a'&&c<='z')||(c<='Z'&&c>='A')) {
if (start == false) {
number++;
start =true;
}
}else{
if (start == true) {
start = false;
}
}
}
return number;
}