精华内容
下载资源
问答
  • 然后根据输入字符串的大小,用realloc()函数动态调整动态存储空间的大小。 直到全部字符都装下为止。 malloc()和realloc() 这两个函数包含在stdlib.h 的头文件里面,所以开头一定要用 #include <stdlib....

    先用malloc()函数在动态存储区分配一块较小的内存空间。用字符型指针 P指向它。

    然后根据输入字符串的大小,用realloc()函数动态调整动态存储空间的大小。

    直到全部字符都装下为止。

    malloc()和realloc() 这两个函数包含在stdlib.h 的头文件里面,所以开头一定要用

    #include <stdlib.h> 命令将这个头文件包含进来。

     

     

    #include<stdio.h>
    #include<string.h> //使用puts函数的时候需要有这个头文件。
    #include<stdlib.h>//使用动态内存分配函数malloc 和 realloc要用。
    
    
    
    
    int main()
    {
    	//用动态调节大小的字符指针来处理。指针指向的空间
    	//可以根据所输入的字符串长度自动调节空间大小。
    	int length(char *p);//申明求字符串长度的函数
    	char *p, ch;//第一字符型 
    	int i = 0, len;  
    	p = (char *)malloc(2 * sizeof(char)); //先暂时设开辟的空间大小为2个字节大小
    	printf("请输入要求的字符串:\n");
    	ch = getchar();  //用getchar()函数获取第一次输入字符。
    	while (ch != 10)  //如果不是回车,就继续循环依次将输入的字符
    					//存储到指针p所对应的内存中。
    	{
    		*(p + i) = ch;
    		p = (char *)realloc(p, i+2);//随着输入字符的增加而改变指针p多对应空间的大小。
    		ch = getchar(); //用getchar()函数依次获取输入字符
    		i++; //没循环依次,坐标移动依次字节。
    
    	}
    	
    	*(p+i) = '\0';//读取完所有的字符后,增加字符串结束字符 ‘空字符’。
    	len = length(p);//调用求长度的行数
    	puts(p);//输出整个字符串
    	printf("此函数的长度为:%d", len);//输出该字符串的长度
    	return 0;
    }
    
    int length(char *p)
    {
    
    	//依次读取每个字符,并用i记录字符个数,只要碰到字符串结束字符‘\0’。
    	int i = 0;  
    	while (*(p+i)!='\0')
    		i++;
    	return i;//返回字符串的长度。
    
    }
    

     

    展开全文
  • VS中利用scanf函数读取字符串

    千次阅读 2017-12-24 13:38:17
    初学C语言,使用VS2017。 VS的scanf函数无法使用,于是根据它的推荐使用了scanf_s。...字符串长度可以直接给定某一个大于字符串真实长度的数字(至少比真实长度大一位,用来存放‘\0’),也可以使用sizeof(字符串名)

    初学C语言,使用VS2017。

    VS的scanf函数无法使用,于是根据它的推荐使用了scanf_s。在输入字符串的时候出现了错误。

    scanf_s("%s", s.name);//无法读取字符串

    在scanf_s函数中增加一个参数——字符串长度,解决了该问题。字符串长度可以直接给定某一个大于字符串真实长度的数字(至少比真实长度大一位,用来存放‘\0’),也可以使用sizeof(字符串名)。

    scanf_s("%s", s.name, sizeof(s.name));//字符串读取成功

    scanf_s("%s", s.name, MaxSize);//字符串读取成功

    展开全文
  • #include<stdio.h> #include<string.h> #include<stdlib.h>//使用动态内存分配函数malloc 和 realloc要用。 ... void copy_s(char *P1, char *p2, int m);//声明被调用函数 ... //p1为原字符串,...
    #include<stdio.h>
    #include<string.h>
    #include<stdlib.h>//使用动态内存分配函数malloc 和 realloc要用。
    
    int main()
    {
    	void copy_s(char *P1, char *p2, int m);//声明被调用函数
    	char *p1, *p2, ch; //p1为原字符串,p2为复制后的字符串
    	int i = 0, m;  //i来记录该字符串有多少个数,m用来记录从第几个字符开始复制
    	p1 = (char *)malloc(2 * sizeof(char)); //先初始化p1字符串的大小,不用太大,
                                                    //后面可以随着 字符增加而增加
    	printf("请输入该字符串:");
    	ch = getchar();   // 获取输入的第一个字符给ch;
    	while (ch != 10)  //如果不是回车,就继续把字符写入到p1指针对应的空间中,因为回车的ASC码为10
    	{
    		*(p1 + i) = ch;      //把值存储到相应的内存单元中。
    		p1 = realloc(p1, 3 + i); //根据字符串大小,扩展存储区域。
    		ch = getchar();  
    		i++;    //没循环依次,下标加1,相应的也是计数器加1
    	}
    	*(p1 + i)='\0';  //待所有字符读取完毕后,写入字符串结束字符。
    	printf("需要从第几个字符开始复制:");  //输入复制字符串的起始位数。
    	scanf("%d", &m);
    	p2 = (char *)malloc((i+2) * sizeof(char)); //根据输入的数算出需要的空间大小,并让p2指向它。
    	copy_s(p1, p2, m);//调用 复制函数。
    	puts(p1); //输出字符串p1,作为比较
    	putchar('\n');
    	puts(p2);//输出字符串p2
    	putchar('\n');
    
    
    	return 0;
    }
    
    
    void copy_s(char *p1, char *p2, int m)
    {
    	int i=0;//从p2指针指向的第一个为止开始写入
    	while (*(p1 + m - 1 )!= '\0')//如果p1字符串没有结束,就继续复制。
    	{
    		*(p2 + i) = *(p1 + m - 1);//把指针p1对应字符逐个赋给指针p2对应的字符串。
    		i++;  //
    		m++;
    	}
    	*(p2 + i) = '\0';//所有字符都复制完毕后,在末尾插入字符串结束字符。
    }

     

    展开全文
  • C++ getLine()函数读取字符串时,总是先读取一个回车符,怎么解决 C++ getLine()函数读取字符串时,总是先读取一个回车符,怎么解决
  • 其中pattern可以字符串,也可以一个正则表达式。例如: a b  [1] 10  attr(,"match.length")  [1] 5  attr(,"useBytes")  [1] TRUE 通过regexpr(".html",a),系统返回如下信息:
    regexpr(pattern,text)函数可以在字符串x中提取出特定字符串pattern的相关信息。其中pattern可以是字符串,也可以是一个正则表达式。例如:

    a<-"GET /News.html HTTP/1.0 feed.html  HTTP/2.0"
    b<-regexpr(".html",a);b
      [1] 10
      attr(,"match.length")
      [1] 5
      attr(,"useBytes")
      [1] TRUE

    通过regexpr(".html",a),系统返回如下信息:

    在字符串a中,第一个和字符串".html"匹配的起始位置为10。可以使用b[1]来直接读取。

    在字符串a中,第一个和字符串".html"匹配的字符长度为5。可以使用attr(b,"match.length")或者b[[2]]来直接读取。

    在字符串a中是否有字符串与".html"匹配,答案为TRUE。可以使用attr(b,"useBytes")来直接读取。

    由上例可知,regexpr()函数只查询匹配第一个特定字符,要想多次匹配需要使用gregexpr()函数。例如:
    a<-"GET /News.html HTTP/1.0 feed.html  HTTP/2.0"
    b<-gregexpr(".html",a);b
      [[1]]
      [1] 10 29
      attr(,"match.length")
      [1] 5 5
      attr(,"useBytes")
      [1] TRUE

     注意

    返回的b是一个列表,在直接读取起始位置时,可以使用b[[1]][1]来表示第一次匹配的起始位置,返回值是10。使用b[[1]][2]表示第2次匹配的起始位置,返回值是29。在直接读取匹配字符串长度时,可以使用attr(b[[1]],"match.length")以向量形式返回两次匹配的字符串长度。

    展开全文
  • 在吸收用键盘输入的数据时gets()与scanf()函数都有读取字符串的功能。但是他们吸收字符串除了gets()能吸收空格而scanf()不能吸收空格的区别之外。他们还是有很大的区别的。若能掌握这些细节,那么用这些函数...
  • 字符函数字符串函数一、求字符串长度strlen C语言中对字符和字符串的处理很是频繁,但是C语言本身是没有字符串类型的,字符串通常放在常量字符串中或者字符数组中。字符串常量适用于那些对它不做修改的字符串函数....
  • sscanf()函数用于从字符串读取指定格式的数据,其原型如下:  int sscanf (char *str, char * format [, argument, ...]); 【参数】参数str为要读取数据的字符串;format为用户指定的格式;argument为变量,...
  • main读取一个由数字字符构成的字符串放入数组,然后调用stoi函数得到转换后的整数并输出。 【输入形式】 一个由数字字符构成的字符串 【输出形式】 一个整数 【样例输入】 4321 【样例输出】 ...
  • C语言版字符串中获得子串的函数,获取字符串中指定位置的子串。如同C++中的string类型、VC++中CString类型、Objective-C的NSStringd等字符串类中的获取子串的方法,C语言版可以通用于各大平台,方便进行代码移植。
  • 字符串格式化命令,主要功能是把格式化的数据写入某个字符串中。sprintf 是变参函数函数原型: int sprintf( char *buffer, const char *format, [ argument] … ); 所需头文件: stdio.h 返回值: 返回...
  • 字符串读写函数fgets

    千次阅读 2015-04-16 14:13:15
    一、读字符串函数fgets函数的功能是从指定的文件中读一个字符串到字符数组中,函数调用的形式为: fgets(字符数组名,n,文件指针); 其中的n是一个正整数。表示从文件中读出的字符串不超过 n-1个字符。在读入的最后...
  • 关键词:搜索/查找/查询/...函数搜索一个字符串在另一个字符串中的第一次出现  该函数返回字符串的其余部分(从匹配点)。如果未找到所搜索的字符串,则返回 false。 语法 strstr(string,search) 参数 描述
  • 编写一个截取字符串函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 但 是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,6,应该输出 为“我ABC”而不是“我ABC+汉...
  • 字符串读写函数fgets和fputs

    千次阅读 2017-01-18 16:29:31
     一、读字符串函数fgets函数的功能是从指定的文件中读一个字符串到字符数组中,函数调用的形式为: fgets(字符数组名,n,文件指针); 其中的n是一个正整数。表示从文件中读出的字符串不超过 n-1个字符。在读入的...
  • 字符串读写函数:fgets和fputs 数据块读写函数:fread和fwrite 格式化读写函数:fscanf和fprintf 以上函数头文件都是stdio.h。 字符读写函数fgetc和fputc 字符读写函数是以字符(字节)为单位的读写函数。每次可...
  • C语言gets()函数:从流中读取字符串

    千次阅读 2015-10-26 10:59:46
    gets()函数从流中读取字符串,直到出现换行符或读到文件尾为止,最后加上NULL作为字符串结束。所读取字符串暂存在给定的参数string中。 【返回值】若成功则返回string的指针,否则返回NULL。 注意:由于gets...
  • 直奔主题前,先大致了解一下思路! 函数给定的原型为:int ...如果你不只是想要被复制的字符串长度,还想要输出被复制的字符串,那么你可以在上面程序的主函数中的return 0;语句前添加指令:printf(“%s\n”,b);。
  • 编写一个函数,它从一个字符串中提取一个字符串函数原型如下: int substr(char dst[], char src[],int start, int len){} 目标是:从 src 数组起始位置向后偏移 start个字符的位置开始,最多...
  • 字符串函数fgets函数的功能是从指定的文件中读一个字符串到字符数组中,函数调用的形式为: fgets(字符数组名,n,文件指针); 其中的n是一个正整数。表示从文件中读出的字符串不超过 n-1个字符。在读入的最后一个...
  • fgets函数规范的字符串输入函数

    千次阅读 2016-01-06 19:53:06
    今天在写测试代码时,使用了gets函数来获取输入的字符串,结果出现了异常警告:...使用fgets可以避免缓冲区异常的危险,但是却将换行符’\n’,也读入到字符串中,因此需要对fgets函数进行封装(wrapper)。char buffer
  • 这个字符串参数必须包含一个或者多个数字,函数应该把这些数字字符转换为整数并返回这个整数。如果字符串参数包含了任何非数字字符,函数就返回零。请不必担心算数溢出。 提示:这个技巧很简单:发现一个数字之前,...
  • C读写字符串函数的停止条件

    千次阅读 2017-04-12 17:08:01
    C语言中的格式控制读入函数scanf(终端读入)和fscanf(文件读入)函数都是以非空白字符开始,以第一个空白字符(空格、换行等)结束,并且系统自动在末尾加上字符串结束标记'\0';  格式控制输出函数 printf(输出...
  • 读取字符串

    千次阅读 2019-05-09 13:39:11
    读取字符串时,scanf()和转换说明%s只能读取一个单词,可是在程序中经常要读取一整行输入,而不仅仅是一个单词。 gets()函数: 它读取整行输入,直到遇到换行符,然后丢弃换行符,储存其他字符,并在这些字符的...
  • sscanf()函数用于从字符串读取指定格式的数据,其原型如下: int sscanf (char *str, char * format [, argument, …]); 【参数】参数str为要读取数据的字符串;format为用户指定的格式;argument为变量,...
  • 字符串分割情况 读取文件时,C++识别的是空格和换...strtok()函数能够按照特定的字符分解字符串一个个子字符串,在头文件#include<string.h>中 strtok()函数原型 char *strtok(char s[], const char *d...
  • sscanf()函数读取字符串中的数字

    千次阅读 2010-08-23 20:41:00
    项目中需要读取形如“@FERFD,1451,368123.30,124.245,0.128,1.579,34.1966004,108.8551924”的字符串中以逗号间隔的数字,先是自己编了一个函数可以读取指定逗号后的数字并转换为double型,函数原型:double wtof...
  • 如何实现将一行字符串分隔成单个单词的split函数;另外还将看到一些常见的错误处理办法以及如何将一个程序分成几个cpp文件的。  本文的主要目的是实现将一行字符串分隔成单个单词的split函数,就如我们熟知的java中...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 624,307
精华内容 249,722
关键字:

哪一个函数可以读取字符串