c 语言 遍历字符数组查找的方法 (自定义头文件)

//题目:在字符串中找出第一个只出现一次的字符。
//如输入“abaccdeff\0”,则输出‘b‘。

#ifndef __SELECT_FIRST__
#define __SELECT_FIRST__
char Select_first(char *p,int size);
char Select_first1(char *p, int size);
char Select_first2(char *p, int size);
#endif                              //头文件  函数声明

#include<stdio.h>//函数体
#include<string.h>

char Select_first(char arr[],int size)
{
	int i = 0, j = 0;
	while (arr[i])
	{

		if ((arr[i] != arr[j]&&j<(size-1))||i==j)
		{
			j++;
		}
		else
		{   
			j = 0;
			i++;
		}
		if (j == (size - 1))
			return arr[i];

	}
	return ‘\0‘;
}
char Select_first1(char *p, int size)
{
	char ch = ‘\0‘;
	char arr[20];
	int i = 1,j=1;
	strcpy(arr, p);
	while (arr[0])
	{
		ch = arr[0];
		i = 1; 
		j = 1;
		while (arr[i])
		{
			if (ch == arr[i])
			{
				j++;
			}
			else
			{
				arr[i - j] = arr[i];
				}
			i++;
		}
		if (j == 1)
			return ch;
		arr[i - j] = ‘\n‘;

	}
	return ‘\0‘;

}
char Select_first2(char p[])
{
	int arr[255] = { 0 };
	char * ptr = NULL;
	ptr = &p[0];
	while (*p)
	{
		arr[*p]++;
		p++;
	}
	while (*ptr)
	{
		if (arr[*ptr] == 1)
			return *ptr;
		ptr++;
	}
	return ‘\0‘;

}

#include<stdio.h>            //主函数
#include"Select_first.h"

int main()
{
	char arr[] = "abbaccdeff";
	char ch=Select_first2(arr,strlen(arr));
	printf("%c\n",ch);
}
时间: 2024-08-29 06:15:46

c 语言 遍历字符数组查找的方法 (自定义头文件)的相关文章

给字符数组赋值的方法

main() { char s[30]; strcpy(s, "Good News!"); /*给数组赋字符串*/ . . . } 上面程序在编译时, 遇到char s[30]这条语句时, 编译程序会在内存的某处留 出连续30个字节的区域, 并将第一个字节的地址赋给s.当遇到strcpy( strcpy 为 Turbo C2.0的函数)时, 首先在目标文件的某处建立一个"Good News!/0" 的字符串. 当中/0表示字符串终止, 终止符是编译时自己主动加上的,

编程题:字符串与字符数组的输入方法。

#include<stdio.h> void main() {char str1[6],str2[10]; int i; for(i=0;i<5;i++) scanf("%c",&str1[i]); str1[5]='\0'; scanf("%s",str2); printf("%s\n%s\n",str1,str2); } 编程题:字符串与字符数组的输入方法.,布布扣,bubuko.com

C语言中字符数组和字符串指针分析

这几天搞Unix上的C程序,里面用到了很多字符数组和字符串指针,我记得在学完C语言后相当一段时间里,对指针这个东西还是模模糊糊,后来工作也没怎么 用到过C,虽然网上这类的文章也有很多,还是决定自己在这做个小总结,也算加深下自己的印象,写了下面的测试程序: #include <stdio.h> int main(int argc, char *argv[]){ char day[15] = "abcdefghijklmn";  char* strTmp = "opq

C语言:字符数组的内容为:&quot;student a am i&quot;,内容改为&quot;i am a student&quot;.只能开辟有限个空间

#include<stdio.h> void my_reverse(int len ,char arr[]) {  int left =0;  int right = len -1;  while(left < right)  {   char tmp = arr[left];   arr[left] = arr[right];   arr[right] =tmp;   left ++;   right --;  } } int main() {  char arr[] = "

C++ vector 实现二维数组时, 在类的头文件中定义时遇到&quot;应输入类型符&quot;的问题?

见下,当我在类的声明文件中定义二维vector时,提示我应输入类型说明符; 但是相同的格式定义,在类中将二维vector修改为在源文件中定义就可以顺利通过,并顺利执行打印 打印结果如下: 望大神来解惑!

通过response.setHeader方法设置头文件

1.设置content-disposition响应头控制浏览器以下载的形式打开文件 response.setHeader("content-disposition", "attachment;filename="+fileName);2.设置输出流的编码方式 response.setCharacterEncoding("UTF-8");3.获取输出流 response.getWriter()4.设置浏览器以何种方式编码输入流 response.s

c语言字符数组的初始化问题

1.字符数组的定义与初始化 字符数组的初始化,最容易理解的方式就是逐个字符赋给数组中各元素. char str[10]={ 'I',' ','a','m',' ',‘h’,'a','p','p','y'}; 即把10个字符分别赋给str[0]到str[9]10个元素 如果花括号中提供的字符个数大于数组长度,则按语法错误处理: 若小于数组 长度,则只将这些字符数组中前面那些元素,其余的元素自动定为空字符(即 '\0' ). 2.字符数组与字符串 在c 语言中,将字符串作为字符数组来处理.(c++中

c语言字符数组与字符串的使用详解

转自:http://www.jb51.net/article/37456.htm 1.字符数组的定义与初始化字符数组的初始化,最容易理解的方式就是逐个字符赋给数组中各元素.char str[10]={ 'I',' ','a','m',' ',‘h','a','p','p','y'};即把10个字符分别赋给str[0]到str[9]10个元素如果花括号中提供的字符个数大于数组长度,则按语法错误处理:若小于数组长度,则只将这些字符数组中前面那些元素,其余的元素自动定为空字符(即 '\0' ). 2.

C语言学习笔记:19_数组-字符数组与字符串(常用字符串函数)

/* * 19_数组-字符数组与字符串.c * * Created on: 2015年7月7日 * Author: zhong */ #include <stdio.h> #include <stdlib.h> #include <string.h> /** *一:字符数组:就是存放字符的char[]数组 * 由于c语言中没有像java,C#中的String(字符串),只有存放字符 的字符型数组当字符串使用(java中的String类也是对字符数组进行封闭的). * *