输入
%s 格式
#include<stdio.h>
#define N 12
int main()
{
char name[N];
printf("Enter your name:");
scanf("%s", name); //用 %s 格式输入,不能有空格,name前不用 地址符 &
printf("Hello %s!", name);
return 0;
}
利用gets函数
#include<stdio.h>
#define N 12
int main()
{
char name[N];
printf("Enter your name:");
gets(name); //用 gets 函数可以输入空格,不用 &
printf("Hello %s !\n", name);
return 0;
}
用字符指针编写
#include<stdio.h>
#define N 12
int main()
{
char name[N];
char *ptrName = name; //写的是ptrName
printf("Enter your name:");
gets(name);
printf("Hello %s !\n", ptrName); //ptrName
return 0;
}
限制字符串长度
gets函数不能限制输入字符串的长度,scanf函数也存在这个问题,限制字符串长度的函数:
fgets(name, sizeof (name), stdin);
#include<stdio.h>
#define N 12
int main()
{
char name[N];
printf("Enter your name:");
fgets(name, sizeof(name), stdin); //从标准输入stdin中读取一行长度为 sizeof(name) 的字符串送到 name 为首地址的储存区中
printf("Hello %s!\n", name);
return 0;
}
第七行语句,限制了输入字符串的长度不能超过数组的大小 sizeof(name) ,所以用户输入的多余的字符都被舍弃了。函数 fgets () 是函数 gets () 的文件操作版。
在字符串中包含双引号
#include<stdio.h>
#define N 12
int main()
{
char name[N];
char str[] = "\"Hello\", I said to"; //又声明了一个字符串数组。双引号用 \" 内容\"
printf("Enter your name:");
fgets(name, sizeof(name), stdin);
printf("%s %s.", str, name); //注意输出
return 0;
}
\ 是一个转义字符。若字符串中有双引号 或 反斜杠 等字符,必须在该字符前使用转义字符。
输出
函数puts用于从括号内的参数给出的地址开始,依次输入存储单元中的字符,当遇到第一个 '\0' 时输出结束,并自动输入一个换行符。函数 puts()输入字符串简洁方便,唯一的不足是不能像函数 printf() 那样在输出行中增加一些其他字符信息(如 “Hello” 等)并控制输出格式。
用字符串结束标志控制输出
for(i = 0; str[i] != '\0'; i++)
{
putchar(str[i]);
}
putchar('\n');
用字符串长度控制输出
len = strlen(str);
for(i = 0; i < len; i++)
{
putchar(str[i]);
}
putchar('\n');