鉴于这种理解,可以定义一个输入函数,先动态申请一个较大的空间,直接向其内输入字符串;输入完毕后检测其长度,再按实际需要申请一个合适大小的空间,把刚才输入的字符串拷贝到这个合适大小的空间里,再把原先申请的大空间释放。举例代码如下://#include "stdafx.h"//If the vc++6.0, with this ...
int n=0,k=100; //初始化,字符串长度为0,字符串空间长度为100 char * s2 = NULL,s1 = (char *)malloc(100); //初始化字符串空间 if (s1 == NULL) return; //内存分配失败,返回 while((c=getchar())!=EOF){ //判断是否到文件结束,一个个读取字符 ...
要输入任意长度字符串,就需要使用动态内存 也就是逐个元素读入,当不够的时候重新分配。以下是一个简单的思路, 以\n作为字符串结束标记。include <stdio.h>#include <stdlib.h>int main(){ int len=100; char *p=NULL; int cnt=0,c; p = (char *)malloc(len); while((c...
第一步:实现动态输入字符串。定义动态输入函数 `char* strdc(char *s)`,接收一个字符型指针 `s`,并返回指向输入字符串的内存地址。初始化变量 `count` 和 `ch` 分别记录循环次数和接收用户输入的字符。使用 `malloc()` 函数动态分配内存,开始循环接收用户输入,直到换行符结束。使用 `realloc(...
main(){ int len, i; char s[1000]; while(scanf("%s", s) != EOF) { len = strlen(s); while(len--) { printf("%c",s[len]); } printf("\n"); } return 0;} 望采纳
以下是我的思路,仅供楼主参考:遍历数组,统计'\n'的次数,从而为指向字符串的指针数组分配内存。然后遍历数组,计算当前子字符串的字符数,然后分配内存,copy。
1、根据估计用户最多输入字符串长度进行申请空间。 2、使用getch、scanf(%c)等一个字符一个字符的接收处理。 3、使用 while(1) { scanf("%1000s",&str); ... //对str字串进行处理 ... //在末尾 if(strlen(str)!=1000)//如果长度不为1000说明已经接收完,此时可以跳出循环 break...
如何才能输入任意长度的字符串,然后将其反向输出呢? 可以通过一个递归的方法巧妙地实现这个功能。 算法描述如下: print(){ 输入字符串的一个字符a: if(a!='#') print(); if(a!='#') then 输出该字符a; } 1. 2. 3. 4. 5. 在该算法中,字符串的结束标志为#,并且#不作为字符串中的内容输出。首先...
if(num[ch]>max) { max=num[ch]; mostch=ch; } } if(index>=0) { if(first<=index) printf("only occur 1 times char in begin is: %c\n",firstch[first]); printf(