c语言中怎样判断字符串的长度问题啊
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言中怎样判断字符串的长度问题啊相关的知识,希望对你有一定的参考价值。
char s[]="\\141\141abc\t";printf("%d\n",strlen(s));输出的结果是什么???还有帮我总结下这类题目怎么做~~~谢谢O(∩_∩)O~
本题的输出结果是9 我给你总结这样的题型。1首先你要知道转义字符,如\n \t \\ \ddd 等这些属于转义字符,只占一个字符串的长度。2.还有就是\101代表ASCII码的为101的字符'A',记住\376 以内的都占一个字符串长度,他们都代表ASCII中的某个字母,数字,或乱码。 希望你看对以后这样的题都做满分 参考技术A 答案是9首先我们来分析一下,\\是一个,1,4,1是3个,已经4个了,\141是一个,5个了,a,b,c是3个,总共8个了,最后\t是一个,总共9个。 该怎么做?首先要特别注意\这个转义字符,后面跟着的和它组成一个字符,在上面这道题上最主要的是\141很有迷惑性,这'\141'表示的是字符'a',它是以3位8进驻的ascii码表示的,所以以后做题时要注意\后面的字符和3位数字,其实他们表示的是一个字符而已。在C语言中怎样判断一个字符串中是不是包含另一个字符串
如果“一个字符串”全部是英文字符的话,只要开一个char s[128];的哈希表,每个在其中出现的字符按它的ASCII值,将相应的元素置为1;
然后扫描“另一个字符串”,检测每一个字符,在数组中对应元素的值是否为1。若这个串里的对应元素值全部为1,则是“包含另一个字符串所有的字符”。
这个算法的时间复杂度为O(n1+n2),n1和n2是二个字符串的长度。
#iclude<stdio.h>
int main()
char s1[200],s2[200],s[128]=0; //初始化,所有字符均未出现
int i,k=1;
gets(s1);
gets(s2);
for(i=0;s[i];i++)
s1[s[i]]=1; //将字符串s1中出现的每一个字符,均“记录在案”
for(i=0;s2[i];i++)
if(!(s[s2[i]]))k=0; //若s2中有字符在“记录簿”中未出现,就作记录
if(k)printf("s1包含了s2中的全部字符\\n"); //根据是否有记录输出相应记录
else printf("s1未包含s2中的全部字符\\n");
return 0;
参考技术A 如果“一个字符串”全部是英文字符的话,只要开一个char s[128];的哈希表,每个在其中出现的字符按它的ASCII值,将相应的元素置为1;然后扫描“另一个字符串”,检测每一个字符,在数组中对应元素的值是否为1。若这个串里的对应元素值全部为1,则是“包含另一个字符串所有的字符”。
这个算法的时间复杂度为O(n1+n2),n1和n2是二个字符串的长度。
#iclude<stdio.h>
int main()
char s1[200],s2[200],s[128]=0; //初始化,所有字符均未出现
int i,k=1;
gets(s1);
gets(s2);
for(i=0;s[i];i++)
s1[s[i]]=1; //将字符串s1中出现的每一个字符,均“记录在案”
for(i=0;s2[i];i++)
if(!(s[s2[i]]))k=0; //若s2中有字符在“记录簿”中未出现,就作记录
if(k)printf("s1包含了s2中的全部字符\n"); //根据是否有记录输出相应记录
else printf("s1未包含s2中的全部字符\n");
return 0;
参考技术B 1. 使用库函数
string.h
strstr函数
函数名: strstr
功 能: 在串中查找指定字符串的第一次出现
用 法: char *strstr(char *str1, char *str2);
说明:返回指向第一次出现str2位置的指针,如果没找到则返回NULL。
调用函数,判断返回值是否等于NULL,决定是否输出
如;
char *p=".c"; //需要的子串
if(strstr(A,p)) printf("%s",A);
2. 不使用库函数
第一行是要查找的字符串
第二行是被查找句子
输出要查找的字符串在被查找句子的首个位置
#include<stdio.h>
#include<string.h>
void main()
int i,j,la,lb,num=0;
char c,a[120],b[4500];
while((c=getchar())!='\n') a[num++]=c;a[num]='\0';
num=0;
while((c=getchar())!='\n') b[num++]=c;b[num]='\0';
la=strlen(a);lb=strlen(b);
for(i=0;(lb-i)>=la;i++)
if(b[i]==a[0])
for(j=0;j<la;j++)
if(b[i+j]!=a[j]) break;
if(j==la) printf("%d\n",i+1);break;
3. 使用指针
#include "stdio.h"
#include "conio.h"
#include "string.h"
int main()
char str[20]="jsdlaadf",substr[10]="sdf";
char *p=str,*q=substr;
int flag=0;
for(;*(p+strlen(substr)-1);p++)
for(q=substr;*p==*q&&*q;p++,q++);
if(!*q)
flag=1;
break;
if(flag==1) puts("accord");
else puts("not accord");
system("pause");
参考技术C #include <stdio.h>
#include<string.h>
int flag=0;
void main()
int f(char str1[],char str2[]);
char str1[20],str2[20],*s1,*s2;
printf("input string1:\n");
gets(str1);
s1=str1;
printf("input string2:\n");
gets(str2); /*str2为要验证的字串*/
s2=str2;
f(s1,s2);
if (flag==1)
printf("\nYES!\n\n");
else if (flag==0)
printf("\nNO!\n\n");
int f(char*s1,char*s2)
char *p,*q;
for(;*s1!='\0';s1++)
if (*s2==*s1) /*判断字符串中是否有和要判断的字串首字符相同的字符*/
flag=1;
p=s1 ; /*s1 p 为第一个相同字符的地址*/
q=s2;
for(;*q!='\0';) /*如果有则判断接下去的几个字符是否相同*/
if (*q++!=*p++)
flag=0;break;
if (flag==1)break;
return(flag);
参考技术D 使用这个函数,
原型: char *strchr(const char *s,char c);
#include<string.h>
查找字符串s中首次出现字符c的位置,返回首次出现c的位置的指针,如果s中不存在c则返回NULL。本回答被提问者采纳
以上是关于c语言中怎样判断字符串的长度问题啊的主要内容,如果未能解决你的问题,请参考以下文章