C语言中的字符数组
周末赶数据结构的作业,整理的一些关于C语言中字符数组的困惑与解答。
1.赋值
C语言中,给字符数组char s[]赋值使用strcpy (在string.h头文件中)
#include <stdio.h>
#include <string.h>
int main()
{
char test[3][4];
strcpy(test[0], "abc");
strcpy(test[1], "adf");
strcpy(test[2], "dsg");
for (int i = 0; i < 3; i++)
printf("%s\n", test[i]);
return 0;
}
2.长度 strlen (string.h)
unsigned int string(char *str) 得到的长度不包括字符串数组后面结尾的'\0'
3.指向字符串数组的指针
char str[] = "Hello World!";
char *str = "Hello World!";
上下两个是一样的意思。
4.输入/输出字符串
输入:gets / scanf (stdio.h)
字符串输入结束后,都会自动加'\0'
#include <stdio.h>
#include <string.h>
int main()
{
char str[30];
char str2[30];
gets(str); // 遇到回车认为输入结束
printf("%s\n", str);
scanf("%s", &str2); // 遇到空格认为输入结束
printf("%s\n", str2);
return 0;
}
输出:puts / printf (stdio.h)
区别在于:puts只能单个地输出字符串且自动换行;而printf可以格式化输出多个字符串,但需要加'\n'换行。
#include <stdio.h>
#include <string.h>
int main()
{
char str[30] = "Hello World!";
printf("%s\n", str);
puts(str);
puts("end");
}