字符串输入的拓展

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
const size_t BUFFER_LEN =128;
const size_t NUM_P =3;
char buffer[128];
char *pS[3]={NULL};
char *pbuffer =buffer ;
int i;
int main()
{
    printf("\n You can enter up to %u message each up to %u ge ",NUM_P,BUFFER_LEN-1);

    for (i=0;i<NUM_P;i++)
    {
        pbuffer=buffer ;
        printf("\n  Enter %s message ",i>0?"another":"a");

        while ((pbuffer-buffer<BUFFER_LEN-1)&&(*(pbuffer++)=getchar())!=‘\n‘);

        if((pbuffer-buffer)<2)
            break;

        if((pbuffer-buffer)==BUFFER_LEN&&*(pbuffer-1)!=‘\n‘)
        {
            printf("String too long ");
            i--;
            continue;

        }

        *(pbuffer-1)=‘\0‘;

        pS[i]=(char*)malloc(pbuffer-buffer);

        if(pS[i]==NULL)
        {
            printf("\n OUT of memory ");
            return 1;
        }

        strcpy(pS[i],buffer);    

    }

    printf("\n In reverse order .the strings you entered are :\n");

    while (--i >= 0)
    {
        printf("\n%s",pS[i]);
        free(pS[i]);
        pS[i]=NULL;
    }

    system("pause");
    return 0;

}
时间: 2024-11-05 12:21:40

字符串输入的拓展的相关文章

C语言 realloc为什么要有返回值,realloc返回值详解/(解决任意长度字符串输入问题)。

在C语言操作中会用到大量的内存操作,其中很常用的一个是realloc(). 由字面意思可以知道,该函数的作用是用于重新分配内存. 使用方式如下: NewPtr=(数据类型*)realloc(OldPtr,MemSize) 其中OldPtr指向 待重新分配内存的指针. NewPtr指向 新分配空间的指针. MemSize为 分配后的空间大小. 该函数的使用涉及以下几个问题: 1.不同情况下的返回值 2.OldPtr指向的内存会不会自动释放 3.OldPtr和NewPtr分别是什么内容,他们有什么关

cin 字符串输入

cin 字符串输入 在学习c的时候,关于字符串的输入,记得有 scanf("%s",s); gets(s); 还有...o.o 好想没了... scanf("%s",s) 读取一行,但空格相当与一个'\n' 不读取. while(scanf("%s",s)){} : 支持 Ctrl+z 结束输入 即 此次运行表达式==0. gets(s) 读取一行,包括空格. cin>>s while(cin>>s): 也支持 Ctrl+

C++每次读取一行字符串输入(学习笔记) (转)

1. 面向行的输入:getline()getline()函数读取整行,它使用通过回车键输入的换行符来确定输入结尾. cin.getline(Arr, 20) // Arr为用来输入行的数组的名称:                      //20包括19个字符和1个空字符 2. 面向行的输入:get()与getline()的工作方式类似,接受参数相同,但get()并不再读取并丢弃换行符,而是将其留在输入队列中.可如下使用: cin.get(Arr1, ArSize); // 读第一行cin.g

字符串输入专题

一.前言:如果想读入一个字符串,必须首先预留存储字符串的空间,然后才使用输入函数来获取合格字符串. 二.创建存储空间 要做的第一件事是建立一个空间用来存放字符串.不要指望计算机读取字符串时会自动计算字符串长度,并且为字符串分配空间.所以,字符串的空间必须人为分配:最简单的办法就是在声明中指出数组的大小. 例1: char *name; scanf("%s",name);//错误 例2:   char name[80]; scanf("%s",name);//正确 例

C字符串输入输出函数

下面就几个常用的字符串输入输出函数做个小小的总结TAT 使用时添加头文件:#include<stdio.h>. scanf("格式控制字符串",变量地址列表):(printf),每次只能接收一个单词,无法接收整行数据 gets(字符数组名或指针):读取一整行的输入,以回车结束读取,如果用来保存接收到数据的空间不够大就会导致缓冲区溢出,覆盖缓冲区之后的数据,在C11中被废弃.gets()在接收数据时,输入换行符时会丢弃,不会被读取,没有换行的效果,读取的换行符被转换为'\0'

用指针对字符串输入/输出

#include<iostream> using namespace std; int main(void) { char *s=new char[80]; cout<<"输入一个字符串: "; cin>>s; getchar(); cout<<"输入的字符串是:"; cout<<s; getchar(); delete []s; s=NULL; } s是一个字符型指针变量,通过new运算符申请一个动态数组

把字符串输入到表格里

在格子中输出字符串 在格子中显示 用户输入一个字符串,把它显示在格子中. 要求: 水平左对齐,垂直顶端对齐. 格子的宽度和高度是先定好的,比如:30 x 7 如果字符串太长,则需要折行显示. 如果实在太长,到最后一行都装不下,则截断它,使之不破坏格子边框. 可能的情景: 情景1 情景2 我们可以定义一个大的字符型数组 char[][] cc,该数组的范围就是表格的大小. 先把数组的四个角赋值为 '+',第一行最后一行的其他位置赋值为 '-',第一列和最后一列赋值为 '|'.这样,表格的框架就打好

标C编程笔记day07 常用标准库介绍、字符串输入处理、字符指针的使用

常用标准库: assert.h:断言,包含assert宏.可以进行自我检查 ctype.h:字符处理,字符的分类,大小转换 errno.h:错误信息处理 float.h:浮点数特性 limits.h:整数的大小,提供了描述整数类型的宏 lcale.h:本地化 math.h:数学函数 setjmp.h:跳转 signal.h:信号处理 stdarg.h:可变长参数处理 stddef.h:经常使用的类型的定义 stdio.h:输入输出 string.h:字符串处理 stdlib.h:其他函数,字符串

C语言 realloc为什么要有返回值,realloc返回值具体解释/(解决随意长度字符串输入问题)。

在C语言操作中会用到大量的内存操作,当中非经常常使用的一个是realloc(). 由字面意思能够知道,该函数的作用是用于又一次分配内存. 使用方式例如以下: NewPtr=(数据类型*)realloc(OldPtr,MemSize) 当中OldPtr指向 待又一次分配内存的指针. NewPtr指向 新分配空间的指针. MemSize为 分配后的空间大小. 该函数的使用涉及下面几个问题: 1.不同情况下的返回值 2.OldPtr指向的内存会不会自己主动释放 3.OldPtr和NewPtr各自是什么