几种常见C语言面试问题分析
1.获取路径下的文件名
char * FindFileName
{
int len
char * tmp = NULL
断言(s!= NULL);
for(len = strlen(s);len & gt0;len -)
{
if((s[len]=='/') ||(s[len]=='//'))
{
tmp = & amps[len+1];
打破;
}
}
返回tmp
}
2.将整数转换成字符。
char * i2a(int n,char *s)
{
int i,sign
断言(s!= NULL);
if((sign = n)& lt;0)
{
n =-n;//转换成正数,有利于位置选择。
}
做
{
s[i++]= n % 10+' 0 ';
}
while ((n /= 10)>0)
if(sign & lt;0)
{
s[i++]= '-';
}
s[I]= '/0 ';
反转;
}
3.将字符转换为整数。
int a2i(char * s)
{
int i,n,sign
断言(s!= NULL);
for(I = 0;s[I]= =“”;i++)
{
NULL//如果字符串前有空格,则跳过所有空格。
}
sign = (s[i] == '-')?: -1 : 1;
if (s[i] == '+' || s[i] == '-')
{
i++;//判断是正整数字符串还是负整数字符串。
}
for(n = 0;s[I]& gt;= ' 0 ' & amp& amps[I]& lt;= '9';i++)
{
n = 10 * n+(s[I]-' 0 ');
}
回车符* n;
}
4.输出字符串是反转的,内存不能动态分配。
字符*反转(字符*秒)
{
int c,I,j;
断言(s!= NULL);
for (i = 0,j = strlen(s)-1;我& ltj;i++,j -)
{
c = s[I];
s[I]= s[j];
s[j]= c;
}
返回s;
}
5.查找子字符串是否存在。
int strindex(char *str,char *searchstr)
{
int end,I,j;
断言((str!= NULL)& amp;& amp(searchstr!= NULL));
//计算结束位置
end = strlen(str)-strlen(search str);
if(end & gt;0 )
{
for(I = 0;我& lt=结束;i++)
{
for(j = I;str[j]= = search str[j-I];j++)
{
if(search str[j-I+1]= '/0 ')/*子串单词结尾*/
{
返回I+1;/*找到子串*/
}
}
}
}
return-1;
}