c语言在字符串中查找
1. 一个简单c语言题目,大神求助!在字符串中查找指定字符
1、打开python语言命令窗口,定义字符串变量s1并进行赋值。
2. C语言文件中字符串的查找与替换
用"rb" open, 用 fread 读, 用 fwrite 写.
记录地点 用 fgetpos.
下面程序例子是按你的原来题意,找目标字串,输出用替代字.直接用文件操作,不开单元存放文件.
输入文件 a.txt 输出文件 tmp.txt
至于你的新要求,给你提示记录地点的方法.你可以rewind(fin),从头一个字一个字读,读一个输出一个,读到的位置等于POS[i]-80时,读80个字但不输出,这就去掉了80个字.
例如找到的POS[]共NN个。
#define buff_size 1024
long int n,n1,n2,i,j,k;
char *buff;
buff=(char*) malloc(buff_size * sizeof(char));
rewind(fin);
for(k=0;k<NN;k++){
if (k==0) {n=POS[k]-80;} else {n=POS[k]-POS[k-1]-80;};
n1 = n / buff_size; n2 = n % buff_size;
if (n1 >0) for (i=0;i<n1;i++){
fread(buff,sizeof(char),buff_size,fin);
fwrite(buff,sizeof(char),buff_size,fout);
};
if (n2 > 0) {fread(buff,sizeof(char),n2,fin);
fwrite(buff,sizeof(char),n2,fout);
};
fread(buff,sizeof(char),80,fin);
for (i=0;i<80;i++) buff[i]='0'; buff[80]='\0';
fwrite(buff,sizeof(char),80,fout);
} ; end for k
这里请自己写 读最后一段,无需改零,读一个字,输出一个字,直到EOF.
-----------------
#include <stdio.h>
#include <stdlib.h>
void main (int argc, char *argv[])
{
FILE *fin,*fout;
char namein[72]="a.txt";
char nameout[72]="tmp.txt";
char target[120],tidai[120];
char work[120];
int L1,L2,i,k=0;
int numread;
fpos_t pos;
fpos_t POS[100];
printf("Enter target string: ");
scanf("%s",&target[0]);
L1 = strlen(target);
printf("Enter replace string: ");
scanf("%s",&tidai[0]);
L2 = strlen(tidai);
if ( (fin = fopen(namein,"rb") ) == NULL ) {
printf("\007Cann't open input file: %s ", namein);exit(1);
};
if ( (fout = fopen(nameout,"wb") ) == NULL ) {
printf("\007Cann't open temp work file: %s ", nameout);exit(1);
};
Lab1:
numread = fread( work, sizeof( char ), L1, fin );
if (numread < L1) {
// fwrite( work, sizeof( char ), numread, fout );
goto done;
};
if ( strncmp(work,target,L1) == 0 ){
// fwrite( tidai, sizeof( char ), L2, fout );
if( fgetpos( fin, &pos ) != 0 ) perror( "fgetpos error" );
else { POS[k] = pos-L1; k=k+1;};
goto Lab1;
};
Lab2:
// fwrite( &work[0], sizeof( char ), 1, fout );
for (i=0;i<L1-1;i++) work[i]=work[i+1];
fread( &work[L1-1], sizeof( char ), 1, fin );
if (feof(fin)) {
// fwrite( &work[1], sizeof( char ), L1-1, fout );
goto done;
};
if ( strncmp(work,target,L1) == 0 ){
// fwrite( tidai, sizeof( char ), L2, fout );
if( fgetpos( fin, &pos ) != 0 ) perror( "fgetpos error" );
else { POS[k] = pos-L1; k=k+1;};
goto Lab1;
} else {goto Lab2;};
// 新述 rewind(fin); 那部分程序语句插在这里,声明放前面
done: fclose(fin);fclose(fout);
printf("output in %s\n",nameout);
for (i=0;i<k;i++){
printf("%ld \n",(long int) POS[i]);
}
exit(0);
}
3. c语言如何查找字符串
C语言中的标准函数库中的strchr()函数可以实现查找字符串中的某个字符。
C语言strchr()函数:
查找某字符在字符串中首次出现的位置
头文件:#include <string.h>
strchr() 用来查找某字符在字符串中首次出现的位置,其原型为:
char * strchr (const char *str, int c);
【参数】str 为要查找的字符串,c 为要查找的字符。
strchr() 将键银会找出 str 字符串中第一次出现的字符 c 的地址,然后将该地址返回。
注意:字符串 str 的结束标志 NUL 也会被纳入检索范围,所以 str 的物亮渗组后一个字符也可以被定位。
【返回值】如果找到指定的字符则返回该字符所在地址,否则返回 NULL。
返回的地址是字符串在内存中随机分配的地罩脊址再加上你所搜索的字符在字符串位置。设字符在字符串中首次出现的位置为 i,那么返回的地址可以理解为 str + i。
提示:如果希望查找某字符在字符串中最后一次出现的位置,可以使用 strrchr() 函数。
4. C语言中在字符串中查找指定字符串
#include"stdio.h" #include"string.h" void main() { char *str1="nayitian anzd"; char *str2="anz"; int index[20]; int num = 0; int i,j; for (i = 0; i < strlen(str1) - 3; i++) for (j = 0; j < 3; j++) { if (*(str1 + i) == *(str2 + j)) //比较 { i ++; //str1移到下一位 if (j == 2) //如果比较了三次都相等则找到一个 { index[num] = i - 2; //记录str1下标 num ++; } } else { i = i - j; //有不相等的跳出,i回到比较前的值 break; } } printf("共找到:%d个\n",num); printf("下标分别是:"); for (i = 0; i < num; i++) { printf("\t%d",index[i]); } getchar(); }
5. C语言实现在一个字符串中查找指定的字符,并输出指定字符在字符串中出现的次数和位置
package com.string.to;
import java.util.Arrays;
import java.util.Scanner;
public class JudeCount{
public static void main(String[]args){
System.out.println("请输入你要判断的字符串:");
Scanner s=new Scanner(System.in);
String str=s.nextLine();
char[]ch=str.toCharArray();
Arrays.sort(ch);//对数组排序
char max='a';//记录出现次数最多元素
int maxcount=0;//记录最大出现次数
int count=1;//中间传值参数判断当前元素出现次数
for(int i=0;i<ch.length-1;i++){//进行判断
if(ch<i>==ch[i+1]){
count++;
}
if(ch<i>!=ch[i+1]){
if(count>maxcount){
maxcount=count;
max=ch<i>;
}
count=1;
}
}
System.out.println("出现最多的元素是:"+max+"次数为:"+maxcount);
}
}
(5)c语言在字符串中查找扩展阅读:
system函数用法:
用法:intsystem(char*command);
程序例:
#include<stdlib.h>
#include<stdio.h>
intmain(void)
{
printf("AbouttospawnandrunaDOScommand\n");
system("dir");
return0;
}
又如:system("pause")可以实现冻结屏幕,便于观察程序的执行结果;system("CLS")可以实现清屏操作。而调用color函数可以改变控制台的前景色和背景,具体参数在下面说明。
例如,用system("color0A");其中color后面的0是背景色代号,A是前闹扒握景色代号。各颜色代码如此纯下:
0=黑色1=蓝色2=绿色3=湖蓝色4=红色5=紫色6=黄色7=白色8=灰色9=淡蓝色A=淡绿色B=淡浅绿色C=淡红色D=淡紫色E=淡黄色F=亮白色
(注意:MicrosoftVisualC++6.0支持system)
颜色属性由两个十六进制数字指定--第一个对应于背景,第二个对应于前景。每个数字
可以为以下任何值:
0=黑色8=灰色
1=蓝色9=淡蓝色
2=绿色A=淡绿色
3=浅绿色B=淡浅绿色
4=红色C=淡红色
5=紫色D=淡紫色
6=黄色E=淡黄色
7=白液庆色F=亮白色