C語(yǔ)言初級(jí)階段4——數(shù)組3——字符數(shù)組
C語(yǔ)言初級(jí)階段4——數(shù)組3——字符數(shù)組
字符數(shù)組的定義:儲(chǔ)存字符類型數(shù)據(jù)的集合
1.注意:如果用字符串給字符數(shù)組初始化,那么不需要{},但是要有""。
2.%s :用來(lái)輸出字符串的格式占位符
3.0數(shù)據(jù) 轉(zhuǎn)義字符 \0 \0表示字符串的結(jié)尾 每個(gè)字符串的末尾都有一個(gè)\0表示結(jié)束
4.%s表示輸出到字符串的\0位置
#include<stdio.h>
int main() {
int arr[10];
char str[10] = { 0 };
str[0] = 'a';
str[1] = 'b';
printf("%d\n", str[1]);
return 0;
}
#include<stdio.h>
int main() {
int arr[10];
char str[10] = { 0 };
str[0] = 'a';
str[1] = 'b';
for (int i = 0; i < 10; i++)
{
printf("%c\n", str[i]);
}
char str1[10] = { "auibdeg" };
for (int i = 0; i < 10; i++)
{
printf("%c\n", str1[i]);
}
return 0;
}
#include<stdio.h>
int main() {
char str1[10]={"auibdeg"};
printf("%s\n",str1);
return 0;
}
#include<stdio.h>
int main() {
char str2[10];
str2[0] = 'a';
str2[1] = 'b';
//str2[9]='
#include<stdio.h>
int main() {
char str2[10];
str2[0] = 'a';
str2[1] = 'b';
//str2[9]='\0';
str2[2] = '\0';
printf("%s\n", str2);
return 0;
}
';
str2[2] = '#include<stdio.h>
int main() {
char str2[10];
str2[0] = 'a';
str2[1] = 'b';
//str2[9]='\0';
str2[2] = '\0';
printf("%s\n", str2);
return 0;
}
';
printf("%s\n", str2);
return 0;
}#include<stdio.h>
int main() {
char str2[10];
scanf("%s", str2);//單個(gè)字符需要加&多個(gè)字符不需要加&
printf("%s\n", str2);
return 0;
}
#include<stdio.h>
int main() {
char str3[10] = "你好";
char str4[] = "好";
return 0;
}
#include<stdio.h>
int main() {
char str5[10] = "abc";
printf("%c\n", &str5[3]);
char str6[10];//
#include<stdio.h>
int main() {
char str5[10] = "abc";
printf("%c\n", &str5[3]);
char str6[10];//\0就是一個(gè)空格
/*scanf("%s",str6);
printf("%s",str6);*/
gets(str5);
puts(str5);
return 0;
}
就是一個(gè)空格
/*scanf("%s",str6);
printf("%s",str6);*/
gets(str5);
puts(str5);
return 0;
}//二維數(shù)組用來(lái)存儲(chǔ)學(xué)生名單可以用中文賦值。
#include<stdio.h>
int main() {
char str7[3][10] =
{
{"張三"},
{"李四"},
{"王五"}
};
printf("%s\n", str7[0]);
return 0;
}
常用的字符串函數(shù)
1.strcmp用來(lái)比較兩個(gè)字符串的函數(shù)
比較完之后返回一個(gè)結(jié)果,0表示兩字符串相等
>0表示str>str1
<0表示str<str1 #include<stdio.h> #include<string.h>//strcmp的頭文件 int main() { char str[10] = "aaaaaa"; char str1[10] = "aaara"; if (strcmp(str, str1) == 0) { printf("YES\n"); } if (strcmp(str, str1) > 0) { printf(">\n"); } if (strcmp(str, str1) < 0) { printf("<\n"); } return 0; }
2.strlen:求字符串的有效長(zhǎng)度
warning:#include<stdio.h> #include<string.h>//strcmp的頭文件 int main() { char str[10] = "aaaaaa"; char str1[10] = "aaara"; if (strcmp(str, str1) == 0) { printf("YES\n"); } if (strcmp(str, str1) > 0) { printf(">\n"); } if (strcmp(str, str1) < 0) { printf("<\n"); } return 0; }
2.strlen:求字符串的有效長(zhǎng)度
warning:\0不算有效長(zhǎng)度 sizeof是求類型大小的
#include<stdio.h>
#include<string.h>//strlen的頭文件
int main() {
char str[10] = "abc";
printf("%d\n", sizeof(str));
printf("%d\n", strlen(str));
return 0;
}
不算有效長(zhǎng)度 sizeof是求類型大小的
#include<stdio.h>
#include<string.h>//strlen的頭文件
int main() {
char str[10] = "abc";
printf("%d\n", sizeof(str));
printf("%d\n", strlen(str));
return 0;
}
3.strcat:字符串的拼接函數(shù)
把str拼接到str1的末尾
str后面的[]空間一定要給夠,不然會(huì)報(bào)錯(cuò),可能會(huì)損壞本文件。
#include<stdio.h>
#include<string.h>//strcat的頭文件
int main() {
char str[10] = "aac";
char str1[10] = "bba";
printf("%s\n", strcat(str, str1));
/*或者是strcat(str,str1);
printf("%s\n",str);*/
return 0;
}
4.strcpy:字符串拷貝函數(shù)
把srt里面的數(shù)據(jù)替換成str1.
#include<stdio.h>
#include<string.h>//strcpy的頭文件
int main() {
char str[10] = "abc";
char str1[10] = "def";
strcpy(str, str1);
char str2[10] = { 0 };
strcpy(str2, "qqqq");
printf("%s\n", str2);
printf("%s\n", str);
puts(str2);
return 0;
}
VS2022改動(dòng)補(bǔ)充
對(duì)于scanf的改動(dòng)問(wèn)題的解決辦法
修改方法1:將scanf換成scanf_s,如果是字符串的話需要改變格式為scanf_s("%s",變量名,變量大小)
#include<stdio.h>
#include<string.h>
int main()
{
/*char str[10];
scanf_s("%s",str,10);
printf("%s\n",str);*/
char ch;
scanf_s("%c", &ch);
printf("%c", ch);
return 0;
}
修改方法2:右擊源文件,打開(kāi)屬性,找到SDL檢查,設(shè)置為否。
對(duì)于gets的改動(dòng)問(wèn)題的解決辦法
修改方法1:將gets換成gets_s.
修改方法2:將gets換成fgets(str,字符串大小,stdin)
鏈接:https://www.dianjilingqu.com/602602.html