c语言输出指定个数的字符,读取指定个数的字符,依照要求输出。当指定数目≥32时,出错...
读取指定个数的字符,按照要求输出。当指定数目≥32时,出错。
代码如下:
/***********************************************************************
*读取输入直到文件结尾,按照用户指定输出
*-p:原样输出;-u:转为大写;-l转为小写
*
#include
#include
void getInput(char *string, int number);
void toUpper(char *string);
void toLower(char *string);
void showString(const char *string);
int main(int argc, char *argv[])
{
int number;
char string[number];
if(argc > 1){
printf("Please enter the maximum number you want input: ");
scanf("%d", &number);
while('\n' != getchar())
;
getInput(string, number);
switch(argv[1][1]){
case 'p': printf("You choose SHOW IT SELF: \n");
showString(string);
break;
case 'u': printf("You choose TOUPPER: \n");
toUpper(string);
showString(string);
break;
case 'l': printf("You choose TOLOWER: \n");
toLower(string);
showString(string);
break;
default : printf("WRONG!\n");
}
} else
printf("Please enter \"-p\" or \"-l\" or \"-u\" atfer the "
"program name!\nDone!\n");
return 0;
}
void getInput(char *string, int number)
{
int index;
printf("Please enter no more than %d characters:\n", number);
for(index=0; index
string[index] = getchar();
string[index] = '\0';
}
void toUpper(char *string)
{
while(*string){
*string = toupper(*string);
string++;
}
}
void toLower(char *string)
{
while(*string){
*string = tolower(*string);
string++;
}
}
void showString(const char *string)
{
while(*string)
putchar(*string++);
}
上述代码的执行结果:
引用$ ./string.exe -u
Please enter the maximum number you want input: 31
Please enter no more than 31 characters:
women doushi haohaizi, tianzhenlanman de haizi.
You choose TOUPPER:
WOMEN DOUSHI HAOHAIZI, TIANZHEN
$ ./string.exe -u
Please enter the maximum number you want input: 33
Please enter no more than 33 characters:
women doushi haohaizi, tianzhenlanman de haizi.
You choose TOUPPER:
$ ./string.exe -u
Please enter the maximum number you want input: 50
Please enter no more than 50 characters:
women doushi haohaizi, tianzhenlanman de haizi.
You choose TOUPPER:
Segmentation fault (核心已转储)
------解决思路----------------------
/***********************************************************************
*读取输入直到文件结尾,按照用户指定输出
*-p:原样输出;-u:转为大写;-l转为小写
*
*/
#include
#include
void getInput(char *string, int number);
void toUpper(char *string);
void toLower(char *string);
void showString(const char *string);
int main(int argc, char *argv[])
{
int number;
char *string;
if(argc > 1){
while (1)
printf("Please enter the maximum number you want input(1..10000000): ");
fflush(stdout);
rewind(stdin);
number=0;
scanf("%d", &number);
if (1<=number && number<=10000000) break;
}
string=new char[number];
if (NULL==string) return 1;
while('\n' != getchar())
;
getInput(string, number);
switch(argv[1][1]){
case 'p': printf("You choose SHOW IT SELF: \n");
showString(string);
break;
case 'u': printf("You choose TOUPPER: \n");
toUpper(string);
showString(string);
break;
case 'l': printf("You choose TOLOWER: \n");
toLower(string);
showString(string);
break;
default : printf("WRONG!\n");
}
delete[] string;
} else
printf("Please enter \"-p\" or \"-l\" or \"-u\" atfer the "
"program name!\nDone!\n");
return 0;
}
void getInput(char *string, int number)
{
int index;
printf("Please enter no more than %d characters:\n", number);
for(index=0; index
string[index] = getchar();
string[index] = '\0';
}
void toUpper(char *string)
{
while(*string){
*string = toupper(*string);
string++;
}
}
void toLower(char *string)
{
while(*string){
*string = tolower(*string);
string++;
}
}
void showString(const char *string)
{
while(*string)
putchar(*string++);
}
------解决思路----------------------
int number;
if(argc > 1){
printf("Please enter the maximum number you want input: ");
scanf("%d", &number);
char *string = new char[number];
...
...
delete[] string;
------解决思路----------------------
数组大小不能动态变化。
------解决思路----------------------
1楼把你的问题指出来了, 你的 char strings[number] 要动态分配。。你不管传多少,你的字符数组strings的大小在程序启动的时候就已经定死了。
c语言输出指定个数的字符,读取指定个数的字符,依照要求输出。当指定数目≥32时,出错...相关推荐
- c语言字母输出什么意思,C语言中字符的输入输出以及计算字符个数的方法详解...
C语言字符输入与输出 标准库提供的输入/输出模型非常简单.无论文本从何处输入,输出到何处,其输入/输出都是按照字符流的方式处理.文本流是由多行字符构成的字符序列,而每行字符则由 0 个或多个字符组成, ...
- C语言fgets()函数(以指定长度读取文件中的字符,并存入字符数组变量中)
C语言fgets()函数(以指定长度读取文件中的字符,并存入字符数组变量中) 需要引入C 标准库 - <stdio.h> 文章目录 描述 声明 参数 返回值 实例 测试(确实只能读n-1个 ...
- C语言文件操作(三)读取指定路径txt文件,并输出文件内容
#include <stdio.h> #include <stdlib.h> #include <assert.h> int main() {//读取数据int a ...
- 用c语言调用Easy X实现图像的输出,附带音乐的读取
用c语言调用Easy X实现图像的输出,附带音乐的读取 要实现此功能需要用EasyX 目录 用c++调用Easy X实现图像的输出,附带音乐的读取 一.下载VS编译环境和EasyX. 二.vc2010 ...
- PHP 读取数据库内容并以二维数组按指定列输出实例
最新PHP 读取数据库内容并以二维数组按指定列输出实例 以下是三零网为大家整理的最新PHP 读取数据库内容并以二维数组按指定列输出实例的文章,希望大家能够喜欢! <?php $host = &q ...
- c语言fgetc()函数(从指定的流 stream 获取下一个字符(一个无符号字符),并把位置标识符往前移动)
C 标准库 - <stdio.h> 文章目录 描述 声明 参数 返回值 实例 描述 C 库函数 int fgetc(FILE *stream) 从指定的流 stream 获取下一个字符(一 ...
- C语言文件操作(二)对指定txt文件中的N个数排序
#include<stdio.h> #include<stdlib.h> #include<time.h> #include<conio.h> #def ...
- C语言编程>第二十一周 ⑥ 请补充main函数,该函数的功能是:从键盘输入一个字符串,即一个指定,然后把这个字符及其后面的所有字符全部删除,结果仍然保存在原串中。
例题:请补充main函数,该函数的功能是:从键盘输入一个字符串,即一个指定,然后把这个字符及其后面的所有字符全部删除,结果仍然保存在原串中. 例如:输入"1234567",指定字符 ...
- R语言使用caret包构建随机森林模型(random forest)构建回归模型、通过method参数指定算法名称、通过ntree参数指定随机森林中树的个数
R语言使用caret包构建随机森林模型(random forest)构建回归模型.通过method参数指定算法名称.通过ntree参数指定随机森林中树的个数 目录
最新文章
- spring包镜像下载地址
- 钩子运行机制HOOK
- Windows RDP协议 Fuzzing 漏洞挖掘研究
- MySQL数据库的基本操作命令
- JS面向对象特性和值类型与复合类型
- poj2031(prim)
- go语言报错:main redeclared in this block
- 无法在PC上找到,android app 创建的文件 问题.
- python plt 一张图两个y轴,图例legend合并
- 操作系统的进程和线程的相关知识的理解
- php 工作管理系统,TP-Admin
- whta is the前后端分离
- EXCEL( 获得指定列的最后一个非空单元格)
- 转载 GIS的下个十年(Cary Mann, vice president, Bentley)
- 计算机系统建模_包图
- ZooKeeper服务-一致性、实现
- Axure8有效注册码
- SAP中的录屏BDC最贱实践
- 2020年中国滚刀行业产销及市场规模分析[图]
- 程序员眼中的中国传统文化-王阳明《传习录》29
热门文章
- Leaflet 改变坐标原点
- python 生成token_python中tokens生成器
- 如何通过远程播放将PlayStation 4游戏流式传输到PC或Mac
- c语言如何算补码,C语言补码(C语言学习笔记)
- 习题7-1 消防车(Firetruck,ACM/ICPC World Finals 1991, UVa208)
- 什么是DICOM以及DICOM如何运作
- 当代书画名家为奥运加油书画推介展【宋碧梅篇】
- 使用EasyExcel导出表单表头-单层表头和多层表头
- 【网络】网络基础知识详解
- AI图像照片动漫发型3D活化修复处理流量主小程序开发