键盘手动输入字符串不限长度,如何定义字符数组将输入的字符串存入?并计算其长度?

Web攻城狮 2014-05-05 08:23:29
键盘手动输入字符串不限长度,如何定义字符数组将输入的字符串存入?并计算其长度?
...全文
437 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
buyong 2014-05-07
  • 打赏
  • 举报
回复
std::string::size
chenxue0821 2014-05-07
  • 打赏
  • 举报
回复
#include <stdio.h>                                                                                                               
                                                                                                                                 
#define len 10                                                                                                                   
int main(int argc, char **argv){                                                                                                 
        int i = 0, length = len;                                                                                                 
        char c;                                                                                                                  
        char *p = (char *)malloc(sizeof(char) * length);                                                                         
        memset(p, 0, length);                                                                                                    
        while((c = getchar()) != '\n'){                                                                                          
                p[i++] = c;                                                                                                      
                getchar();                                                                                                       
                if(i == length){                                                                                                 
                        length += len;             
                        char * tmp = (char *)malloc(sizeof(char) *length);
                        memset(tmp, 0, length);                                                                                  
                        memcpy(tmp, p, length - len);                                                                            
                        free(p);                                                                                                 
                        p = tmp;                                                                                                 
                }                                                                                                                
        }                                                                                                                        
        printf("string length = %d\n", i);                                                                                       
        printf("context is:%s\n", p);                                                                                            
        return 1;                                                                                                                
}                                                                                                                                
赵4老师 2014-05-07
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#define LEN 10
int main() {
    int i, length;
    char c;
    char *p,*tmp;

    length=LEN;
    p = (char *)malloc(sizeof(char) * length);
    if (NULL==p) return 1;
    i=0;
    while((c = getchar()) != '\n') {
            p[i++] = c;
            getchar();
            if (i == length){
                    length += LEN;
                    tmp = (char *)realloc((void *)p,sizeof(char) *length);
                    if (NULL==tmp) {free(p);return 1;}
                    p = tmp;
            }
    }
    p[i]=0;
    printf("string length = %d\n", i);
    printf("context is:%s\n", p);
    free(p);
    return 0;
}
赵4老师 2014-05-07
  • 打赏
  • 举报
回复
对6楼代码的改进:
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#define LEN 10
int main() {
    int i, length;
    char c;
    char *p,*tmp;

    length=LEN;
    p = (char *)malloc(sizeof(char) * length);
    if (NULL==p) return 1;
    i=0;
    while((c = getchar()) != '\n') {
            p[i++] = c;
            getchar();
            if (i == length){
                    length += LEN;
                    tmp = (char *)realloc((void *)p,sizeof(char) *length);
                    if (NULL==tmp) {free(p);return 1;}
                    p = tmp;
            }
    }
    p[i]=0;
    printf("string length = %d\n", i);
    printf("context is:%s\n", p);
    return 0;
}
赵4老师 2014-05-06
  • 打赏
  • 举报
回复
malloc,realloc,free
  • 打赏
  • 举报
回复
定义一个string类型的接受变量,strlen()取长度。
zcdabing 2014-05-06
  • 打赏
  • 举报
回复

string s;
while(cin>>s)
{
 //....ctl+c结束
}
Morrisss_ 2014-05-05
  • 打赏
  • 举报
回复
std::string..
一起来玩玩呗 2014-05-05
  • 打赏
  • 举报
回复
设置一个输入结束符

65,208

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧