C语言如何依次读取字符,C中的字符串,如何获取subString
C中的字符串,如何获取subString
我有一个字符串:
char * someString;
如果我想要此字符串的前五个字母并将其设置为otherString,该怎么办?
SuperString asked 2020-02-17T20:47:11Z
11个解决方案
53 votes
#include
...
char otherString[6]; // note 6, not 5, there's one there for the null terminator
...
strncpy(otherString, someString, 5);
otherString[5] = '\0'; // place the null terminator
pib answered 2020-02-17T20:47:28Z
7 votes
广义的:
char* subString (const char* input, int offset, int len, char* dest)
{
int input_len = strlen (input);
if (offset + len > input_len)
{
return NULL;
}
strncpy (dest, input + offset, len);
return dest;
}
char dest[80];
const char* source = "hello world";
if (subString (source, 0, 5, dest))
{
printf ("%s\n", dest);
}
Dan Olson answered 2020-02-17T20:47:48Z
7 votes
char* someString = "abcdedgh";
char* otherString = 0;
otherString = (char*)malloc(5+1);
memcpy(otherString,someString,5);
otherString[5] = 0;
更新:
提示:了解定义的一种好方法称为“右-左规则”(最后一些链接):
从标识符开始读取,然后大声说=>“ char* someString;是...”
现在转到someString的右边(语句以分号结尾,无话可说)。
现在转到标识符的左侧(遇到*)=>所以说“ ...指向...的指针”。
现在转到“ *”(找到关键字char)的左侧=>说“ ..char”。
做完了!
所以char* someString; =>“ someString是一个指向char的指针”。
由于指针仅指向某个内存地址,因此它也可用作字符“数组”的“起点”。
这适用于任何事物..
char* s[2]; //=> s is an array of two pointers to char
char** someThing; //=> someThing is a pointer to a pointer to char.
//Note: We look in the brackets first, and then move outward
char (* s)[2]; //=> s is a pointer to an array of two char
一些链接:如何解释复杂的C / C ++声明和如何阅读C声明
Liao answered 2020-02-17T20:48:53Z
5 votes
您需要为新字符串otherString分配内存。 通常,对于长度为n的子字符串,类似这样的方法可能对您有用(请不要忘记进行边界检查...)
char *subString(char *someString, int n)
{
char *new = malloc(sizeof(char)*n+1);
strncpy(new, someString, n);
new[n] = '\0';
return new;
}
这将返回someString的前n个字符的子字符串。 完成使用free()的操作后,请确保释放内存。
Neal answered 2020-02-17T20:49:17Z
4 votes
您可以使用snprintf获得具有精度的char数组的子字符串。 这是一个名为“ substring.c”的文件示例:
#include
int main()
{
const char source[] = "This is a string array";
char dest[17];
// get first 16 characters using precision
snprintf(dest, sizeof(dest), "%.16s", source);
// print substring
puts(dest);
} // end main
输出:
这是一个字符串
注意:
有关更多信息,请参见printf手册页。
angelvmx answered 2020-02-17T20:49:55Z
0 votes
strncpy(otherString, someString, 5);
不要忘记为otherString分配内存。
Colin answered 2020-02-17T20:50:15Z
0 votes
#include
#include
int main ()
{
char someString[]="abcdedgh";
char otherString[]="00000";
memcpy (otherString, someString, 5);
printf ("someString: %s\notherString: %s\n", someString, otherString);
return 0;
}
如果您不使用printf语句并在所有常量中都放入常量,则不需要stdio.h,但最小的程序是不好的形式,应避免使用。
gavaletz answered 2020-02-17T20:50:35Z
0 votes
一口气做到这一切:
char *otherString = strncpy((char*)malloc(6), someString);
otherString[5] = 0;
Steve Emmerson answered 2020-02-17T20:50:54Z
0 votes
char largeSrt[] = "123456789-123"; // original string
char * substr;
substr = strchr(largeSrt, '-'); // we save the new string "-123"
int substringLength = strlen(largeSrt) - strlen(substr); // 13-4=9 (bigger string size) - (new string size)
char *newStr = malloc(sizeof(char) * substringLength + 1);// keep memory free to new string
strcpy(newStr, largeSrt, substringLength); // copy only 9 characters
newStr[substringLength] = '\0'; // close the new string with final character
printf("newStr=%s\n", newStr);
free(newStr); // you free the memory
Cristian answered 2020-02-17T20:51:10Z
0 votes
我认为这是简单的方法...但是我不知道如何直接传递结果变量,然后创建一个本地char数组作为temp并返回它。
char* substr(char *buff, uint8_t start,uint8_t len, char* substr)
{
strncpy(substr, buff+start, len);
substr[len] = 0;
return substr;
}
Mohammad Nikouie answered 2020-02-17T20:51:30Z
0 votes
此代码是substr函数,模仿其他语言中存在的同名函数,只需解析:字符串,开头和字符数,例如:
printf( "SUBSTR: %s", substr("HELLO WORLD!",2,5) );
上面将打印HELLO。 如果您在字符串长度范围内传递值,则该值将被忽略,因为循环只会迭代字符串的长度。
char *substr(char *s, int a, int b) {
char *r = (char*)malloc(b);
strcpy(r, "");
int m=0, n=0;
while(s[n]!='\0')
{
if ( n>=a && m
r[m] = s[n];
m++;
}
n++;
}
r[m]='\0';
return r;
}
Daniel J. answered 2020-02-17T20:51:55Z
C语言如何依次读取字符,C中的字符串,如何获取subString相关推荐
- matlab依次读取每个数,『matlab如何依次读取文件夹中EXCEL文件,并对每一个EXCEL特定列全部数值进行处理?』matlab调入excel文件的某一列...
matlab导入excel表格,第一行为x,第一列为y的数据,其余为z 行的NI(r=1--0.25)比烦. filename='a.xls';%,可据你的需要更改 y=xlsread(filenam ...
- Python依次读取Excel文件中的Sheet
利用pandas依次读取excel表格中每个sheet的数据,并按照行进行打印,输出格式为列表 主要解决以下问题: 读取Excel 对每个sheet中的数据单独读取 按照行对每一条数据进行读取 将读取 ...
- C语言 —— 把字符指针中的字符串,存入字符数组中
问题描述:有一个用字符指针表示的字符串char *str = "0 12"; 有一个数组 char buf[128] = {0}; 现在需要将字符指针表示的字符串"0 ...
- (C语言)输入一行字符,将此字符串中最长的单词输出。
输入一行字符,将此字符串中最长的单词输出. #include<stdio.h> #include<string.h> int main() {char a[100], b[10 ...
- java 判断 中文字符_java中判断字符串中是否有中文字符
package com.meritit.test; public class TestChart { public static void main(String[] args) throws Exc ...
- mysql 模糊匹配比自己短潆字符_mysql中生成字符串对应的英文字母(拼音首字母)...
mysql中生成字符串对应的英文字母(拼音首字母)的存储过程,触发器和函数 1.规则 1.1.输入字符串长度255(可变),输出字符串10(可变) 1.2.对于全英文字母或数字,输出空格后的首字符,均 ...
- java 判断是否中文字符_java中判断字符串是否是中文的方法
java中判断字符串是否是中文的方法 发布时间:2020-06-25 14:07:38 来源:亿速云 阅读:79 作者:Leah 本篇文章为大家展示了java判断字符串是否为中文的方法,代码简明扼要并 ...
- 如何利用C/C++逐行读取txt文件中的字符串(可以顺便实现文本文件的复制)
原文地址: http://blog.csdn.net/stpeace/article/details/12404925 如下代码均在Windows/VC++6.0下测试通过, 请一定注意linux和 ...
- java读取word表格中的数据_JAVA获取word表格中数据的方案
上一个项目的开发中需要实现从word中读取表格数据的功能,在JAVA社区搜索了很多资料,终于找到了两个相对最佳的方案,因为也得到了不少网友们的帮助,所以不敢独自享用,在此做一个分享. 两个方案分别是: ...
最新文章
- JS 实现可停顿的垂直滚动
- socket什么意思_浅析Redis为什么这么快
- linux chpasswd命令 批量修改用户密码
- flutter分平台主题定制
- SQLServer------聚集索引和非聚集索引的区别
- python mpi开销_GitHub - hustpython/MPIK-Means
- Linux调试时常见问题,C程序在linux下调试时经常出现的问题
- 不均匀正负样本分布下的机器学习
- java中jtextpane_Java JTextPane
- 让你“爱”上 GitHub,解决访问时图裂、加载慢的问题
- PHP读写指定URL参数的方法
- 图像处理实战-Python编程进阶
- VS编译错误:error C2143: 语法错误 : 缺少“;”(在“类型”的前面)
- MySQL卸载干净检查_MySQL数据库卸载干净处理
- php pdf怎么转换成jpg图片,如何在线将pdf转换成jpg图片格式?
- mongodb-b站黑马程序员
- 根据身份证号计算年龄 15位或18位身份证号的年龄计算方法
- 计算机键盘的型号,标准电脑键盘尺寸
- Vert.x(vertx) 实现TCP服务
- LitJson问题汇总
热门文章
- uniapp php交互,uni-app路由跳转及参数的传参和接收
- 河南oracle客户端,解决Oracle监听服务报错
- LVM逻辑卷管理@设备、格式、摩、引导自己主动安装一个完整的章节
- c语言怎么储存字母,c语言怎么用变量存储中文字符?书本上面没有的秘密
- linux环境 前端开发环境搭建,Linux运维知识之linux 前端环境搭建
- JAVA获取同一路径下所有子类或接口实现类
- 前端 JavaScript 实现一个简易计算器
- 项目缺少包如何和服务器,解决缺少服务器依赖包问题
- linux对于图形方式的运行级,在大多数Linux发行版本中,图形方式的运行级定义为( )?...
- 我的博客学习记录一箩筐(每天更新)