1 题目
根据要求编写程序P780.C的指定部分:
程序P780.C已编写部分代码(单击此处下载),请根据程序中的要求完善程序(在指定的位置添加代码或将__________换成代码)——注意,除指定位置外,不能对程序中已有部分作任何修改或重新编写一个程序,否则作0分处理。
程序的功能为从键盘上读入一行字符,在屏幕上输出该行字符的长度及内容(先输出长度,后输出内容),具体要求有:
(1)以回车表示行结束且回车不计入输入内容。若读入过程中发生错误或遇到文件结束,则也表示行输入结束。
(2)若用户输入时输入了很多字符,则仅读入前100个字符。
(3)不能使用库函数gets、fgets、strlen或使用同名的变量、函数、单词。
程序的运行效果应类似地如图1所示,图1中input a string: 123456 vdget 7u84,y37f部分之123456 vdget 7u84,y37f是从键盘输入的内容。
input a string: 123456 vdget 7u84,y37f
The string lenth is: 22
The string is: 123456 vdget 7u84,y37f
2 下载文件
代码
#include<stdio.h>
/* userCode(<50字符): 自定义函数之原型声明 */
______________________________
int main(void)
{
int Len;
char String[101] = "?????????????????????????????????????????????????????????????";
printf("input a string: ");
______________________________ /* userCode(<50字符): 调用函数实现输入并统计输入字符个数 */
printf("\nThe string lenth is: %d\n", Len);
printf("The string is: %s\n", String);
return 0;
}
/* User Code Begin:考生在此后完成自定义函数的设计,行数不限 */
3 改后文件
#include<stdio.h>
/* userCode(<50字符): 自定义函数之原型声明 */
int getLen(char *str);
int main(void)
{
int Len;
char String[101] = "?????????????????????????????????????????????????????????????";
printf("input a string: ");
Len = getLen(String); /* userCode(<50字符): 调用函数实现输入并统计输入字符个数 */
printf("\nThe string lenth is: %d\n", Len);
printf("The string is: %s\n", String);
return 0;
}
/* User Code Begin:考生在此后完成自定义函数的设计,行数不限 */
int getLen(char *str)
{
int ch;
int Len;
for (Len = 0; Len < 100; ) { // 先判断长度限制再读取
ch = getchar();
if (ch == EOF || ch == '\n') // 遇到结束条件立即退出
break;
str[Len++] = ch; // 先存字符后递增计数器
}
str[Len] = '\0'; // 确保字符串正确终止
return Len;
}
4 知识点
- 函数的声明、定义、调用
- 字符串用数组表示,串尾一定要注意结束符号的导入
-
- 在字符数组的最后一个有效字符输入后,补进
'\0'字符
- 在字符数组的最后一个有效字符输入后,补进
- 逐个字符计数,从而计算字符串的长度
- 输入字符时的注意事项
-
- 长度限制,不可数组越界
- 输入的结束符,不进入到字符数组中,如回车
- 输入字符时出错,或是遇到结束符号 EOF 的判断
- 一定是:先完成输入,再做判断