做网站dreamwa,如何知道自己网站主机,微信开放平台怎么解除,房产网站模板程序目录 1 C 截取字符串,截取两个子串中间的字符串2 获取该字符串后面的字符串用 strstr() 函数查找需要提取的特定字符串#xff0c;然后通过指针运算获取该字符串后面的字符串用 strtok() 函数分割字符串#xff0c;找到需要提取的特定字符串后#xff0c;调用 strtok() 传入… 目录 1 C 截取字符串,截取两个子串中间的字符串2 获取该字符串后面的字符串用 strstr() 函数查找需要提取的特定字符串然后通过指针运算获取该字符串后面的字符串用 strtok() 函数分割字符串找到需要提取的特定字符串后调用 strtok() 传入 NULL 参数继续分割字符串获取下一个子串。 3 C语言strncpy字符串的截取从左边开始截取n个字符从右边开始截取n个字符从中间某处截取一定长度的的子字符串 C语言中将文件中的某行的字符串读取出来读取指定行 提取包含特定内容的所有行读取包含指定内容的行数 获取所在行清空字符串 1 C 截取字符串,截取两个子串中间的字符串
// 截取字符串,截取两个子串中间的字符串
char g_str[400];
char* InterceptString (char *str, char *left_str, char *right_str)
{char *l_str strstr(str, left_str);int r_str strcspn(l_str, right_str);int l_len strlen(left_str);int str_len r_str - l_len;strncpy(g_str, l_strl_len, str_len);g_str[str_len1] \0;return g_str;
}// 截取字符串的信号强度char at[] ATCSQ\r\n\r\nCSQ: 18,99\r\n\r\nOK\r\n;char *dd;dd InterceptString (at, CSQ: ,,99);USART_printf(huart1,dd%s\r\n,dd);//将串口2接收到的数据发送到串口1memset(g_str, 0, sizeof(g_str)); // 清空字符串
2 获取该字符串后面的字符串
用 strstr() 函数查找需要提取的特定字符串然后通过指针运算获取该字符串后面的字符串
#include stdio.h
#include string.h
int main() {
char str[] The quick brown fox jumps over the lazy dog;
char *substr strstr(str, brown); // 查找 brown 子串
if (substr ! NULL)
{
substr strlen(brown); // 获取 brown 后面的字符串 printf(%s, substr);
}
return 0;
}#include stdio.h
#include string.hchar *get_str_spec(char *search_string, char *sing)
{char *substr strstr(search_string, sing); // 查找 search_string 子串 if (substr ! NULL) { substr strlen(sing); // 获取 brown 后面的字符串 printf(%s, substr); }return substr;
}int main() {
char str[] The quick brown fox jumps over the lazy dog;
char *cCCNULL;cCCget_str_spec(str, brown );
printf(%s\n,cCC);
}输出结果为
fox jumps over the lazy dog
用 strtok() 函数分割字符串找到需要提取的特定字符串后调用 strtok() 传入 NULL 参数继续分割字符串获取下一个子串。
#include stdio.h
#include string.h
int main() {
char str[] The quick brown fox jumps over the lazy dog;
char *token strtok(str, ); // 分割字符串以空格为分隔符
while (token ! NULL) {
if (strcmp(token, brown) 0)
{ // 找到需要提取的特定字符串
token strtok(NULL, ); // 继续分割字符串获取下一个子串 printf(%s, token); break; }
token strtok(NULL, ); } return 0;
}输出结果为
fox
3 C语言strncpy
字符串的截取
#include stdio.h
#include string.hint main(void){char dest[5]{0};char src[]abcdefghijk;strncpy(dest,src,4);//注意一下这里假如改为5的话可能会出现//内存越界使得dest可能会占用其它模块的内存从而导致错误发生;//strncpy(dest,src5,4);//从第5个字符开始截取printf(dest: %s\n,dest);
return 0;
}从左边开始截取n个字符
static char* left(char *dest,const char *src ,int n){
char *pdest;
char *qsrc;
int lenstrlen(src);if(nlen){nlen;
}
while(n--) *(p)*(q);
*(p)\0;return dest;
} 从右边开始截取n个字符
static char* light(char *dest,const char *src ,int n){
char *pdest;
char *qsrc;
int lenstrlen(src);if(nlen){nlen;
}
//int startlen-n;
//qqstart;
qlen-n;
while(n--) *(p)*(q);
*(p)\0;
return dest;
} 从中间某处截取一定长度的的子字符串
static char* cut_substr(char *dest,const char *src ,char start,int n){
char *pdest;
char *qsrc;
chsr *tempNULL;
int lenstrlen(src);if(startlen || start0){return NULL;
}
tempqstart;
if(nstrlen(temp)){//注意这里截取长度如果超过了src剩余的长度则只截取到src的最后以避免内存越界nstrlen(temp);
}
qstart;
while(n--) *(p)*(q);
*(p)\0;
return dest;
} C语言中将文件中的某行的字符串读取出来
#include stdio.h
#include stdlib.h
#include string.h
#define MaxCols 2000 //设定每行字符数不超过MaxCols根据变化调整
//获取已经打开文件fp的第line行内容到stri如果成功返回得到的字节数
//如果没有那么多行返回-2
int getlinetxt(FILE *fp,int line,char *stri){int i;fseek(fp,0,0); //指针到文件最开始for(i0;iline;i) if(fgets(stri,MaxCols,fp)NULL) //没有这么多行错误return -2;return strlen(stri);
}
//获取filename文件的第line行内容到stri如果成功返回得到的字节数
//如果打开文件失败返回-1如果没有那么多行返回-2
int getfiletxt(char *filename,int line,char *stri){FILE *fp;if ((fpfopen(filename,r))NULL){//打开文件错误返回-1 return -1;}return getlinetxt(fp,line,stri);fclose(fp);
}
int main(){char s[MaxCols];int row10, flag;//以下例子是获取d:\temp.txt的第10行文本内容 flaggetfiletxt(d:\\temp.txt,row,s);if (flag-1)printf(打开文件错误\n);else if(flag-2)printf(文件中的行数不足%d行\n,row);elseprintf(获取到的文本是: \n%s包含最后的换行符长度%d\n,s,flag);
}读取指定行
feof()是检测流上的文件结束符的函数如果文件结束则返回非0值否则返回0
#include stdio.h
#include readline.h
// 读取文件指定一行
int ReadLine1(const char *fileName, char outBuf[], int n){int whichLine n; //指定要读取哪一行int currentIndex 1; //当前读取的行char buf[1024] { 0 }; //临时 不能做返回值 防止局部数组被释放后非法访问内存FILE *file;int isOpen fopen_s(file, fileName, r);if (isOpen ! 0) {printf(文件打开失败\n);return -1;}while (!feof(file)){if (currentIndex whichLine){fgets(outBuf, 1024, file); //读取一行 必须用数组break;}fgets(buf, 1024, file); //临时数组读取一行,并定位到下一行currentIndex;}fclose(file);return 0;
}
提取包含特定内容的所有行
#includeiostream
#includefstream
#includecstring
using namespace std;
int find(char *str,char ch)
{int i;for(i0;istrlen(str);i){if(str[i]ch){return 1;}}return 0;
}
void change(char *str,char ch1,char ch2)
{int i;for(i0;istrlen(str);i){if(str[i]ch1){str[i]ch2;}}
}
void deletestr(char*str,char ch)
{int i;for(i0;istrlen(str);i){if(str[i]ch){str[i]\0;}}
}
int main()
{ifstream input(1.dat);ofstream output(2.dat);char str[50];do{inputstr;if(find(str,A)){change(str,A,B);deletestr(str,C);if(str!NULL){outputstrendl;}}}while(!input.eof());input.close();output.close();return 0;
} 读取包含指定内容的行数
#include stdio.h
#include stdlib.h
#include string.h
#include unistd.h
int main()
{ char *filename ./example.txt; // 替换为您的文件名 char *search_string target_string; // 替换为您要搜索的字符串 int count 0; FILE *file fopen(filename, r); if (file NULL) { perror(Error opening file); return 1; } char line[256]; while(fgets(line, sizeof(line), file)! NULL) { if (strstr(line, search_string)! NULL){ count; } } fclose(file); printf(Number of lines containing the target string %d \n, count); return 0;
}
获取所在行
#include stdio.h
#include stdlib.h
#include string.h
#include unistd.h
/*
char *filename :path
char *search_string: string
*/
int get_linenum(char *filename, char *search_string)
{//char *filename ./example.txt; // 替换为您的文件名 //char *search_string target_string; // 替换为您要搜索的字符串 char line[1024];int num0; int count 0;FILE *file fopen(filename, r);if (file NULL){perror(Error opening file);return 1;}while (fgets(line, sizeof(line), file)! NULL){num;if (strstr(line, search_string)! NULL){count;break;}}fclose(file);//printf(Number of lines containing the target string %d line num: %d \n, count,num);return num;
}int main()
{printf(%d\n, get_linenum(./example.txt, target_string));
}清空字符串
char a[ ]aaaaaaaa; //定义字符数组
for (unsigned int i 0; i strlen(a); i)a[i] \0 ; //for循环清空数组 memset包含在头文件string.h中函数原型为memset(void *s,int ch,size_t n)。
char a[ ]aaaaaaaa; //定义字符数组
memset(a, 0, sizeof(a)); //清空数组 直接使用strcpy将一个空串赋值给字符串就可以需要string.h
char ss[11] {hello world}; //当前为hello world
strcpy(ss, );
//现在的ss就是空串了