C语言 字符串问题 求大神解救
char的定义是字符,不是字符串,如果不加[],就不能赋值字符串,
而#define是直接定义字符串,相当于用s替代后面长的
char str[] ="ABCD",*p=str;
so,
char str[5]={'A','B','C','D','\0'} ;
so,
*( p+4) = '\0' = 0 ;
printf("%d
", *(p+4)) - > printf("%d
", 0 ) ;
strlen(s) , 从s开始,一直到 '\0' ,有几个算几个。
strlen("s
\016\0end") = 3
-> "s
\016\0\end" = { 's', '
' , '\016', '\0', 'e', 'n', 'd', } ;
\016 是八进制形似的转义!至于,转义字符有几种形式,自己BAIDU吧。
#include<stdio.h>
void find(char a[]);
int main()
{
char a[99999];
printf("输入一行字符串
");
gets(a);
find(a);
getch();
}
void find(char a[])
{
int i,count,j,k=0,q=0,word=0;
for(i=0;a[i]!='\0';i++)
{
count=0;
for(j=i;a[j]>='A'&&a[j]<='Z'||a[j]>='a'&&a[j]<='z';j++)
{
count++;
}
if(word<count)
{
word=count;
k=i;
q=j;
}
}
for(i=k;i<q;i++)
printf("%c",a[i]);
}
void find(char a[])
{
int i,count,j,k,q,word=0;
k=0; //
for(i=0;a[i]!='\0';i++)
{
count=0;
for(j=i;a[j]!=' '&& a[j]!='\0';j++) //
{
count++;
}
if(word<count)
{
word=count ; //
k=i;
q=j;
}
i=j; //
}
for(i=k;i<q;i++) //
printf("%c",a[i]);
}
char a[99999];
数组空间太大了。改为a[99]试试吧
梅哗爱可: 你的程序考虑的不周全,假如字符串首位的空格都不止一个,那你这种方法就不够完善另外对于字符串来说,一般利用'\0'判断字符串长度而不是直接给出长度 你...
巧家县17789719702: C语言字符串简单问题 求解~ - ?
梅哗爱可: 其实已经出错了,我们看看栈:|----------'1''2''3''4''5''\0''1''2''3''4''\0'******| 栈顶 c2起始地址 c1起始地址 栈底 高地址 在X86架构的体系中,栈底为高地址,并向低地址增长.当执行strcpy(c1, c2)时,c1开始的内存地址,被c2开始的内存地址的数值覆...
巧家县17789719702: c语言字符串输入的问题,求解 - ?
梅哗爱可: 编译器问题. VS 不允许使用scanf 而要用scanf_s 你的代码 scanf(“%s”,a,10)是错误的. 需要 scanf_s("%s",a,10); 对于%c和%s的,都需要加最大长度限定. 不方便,但是VS就这么规定 没办法. 要么不用VS,要么接受
巧家县17789719702: 一道C语言字符串题,求解,简单说一下过程 - ?
梅哗爱可: 这里要注意的字符参与算术运行.是用字符的ASCII码来运算的.如:'0'的ASCII码是48,依次为:1是49……
巧家县17789719702: c语言字符串问题 - ?
梅哗爱可: #include int main(void) { int flag = 0; char s[128]; gets(s); if (strstr(s, ".sch") != NULL) { flag = 1; } else { flag = 0; } printf("%d\n", flag); return 0; }
巧家县17789719702: C语言输入字符串问题 - ?
梅哗爱可: while(scanf("%c",&a[i])==1)这里是以%c字符格式进行接受的,所以你输入11 12 13回车后,一个%c带走一个字符.而且目标数组a也是字符数组char a[100](这个100是最大容量,放的数据小雨100就可以,count起到计数的作用,或者说能...
巧家县17789719702: C语言编程求助 字符串问题?
梅哗爱可: #include<iostream>#include<string>using namespace std;int main(){int n;string s,min,max;cout<<"input n:";cin>>n;cout<<"input string:"<<endl; cin>>s; max=s; min=s; n--;while(n--){ cin>>s; if(s.length()>max.length()) max=s; if(s.length()<min....
巧家县17789719702: C语言简单的字符串、字符处理问题求助 - ?
梅哗爱可: 第一题:简单点的做法是申请个足够大的char数组.比如假定最多1000种字串,每串最大长度为20,就申请word[1000][20],以及一个num[1000],一个字串个数wordNum,初始化置为0.然后每读到一个字串就d到word中检测有没有重复的,有...
巧家县17789719702: 求教一个C语言中字符串的处理问题 - ?
梅哗爱可: 这其实就是字符串数组插入,定义一个足够大的数组存放第一个串,然后依次...
巧家县17789719702: 一个C语言字符串输入问题 - ?
梅哗爱可: 我也试了一下,没问题,你到底是什么问题,是要在s1或s2中输入空格吗?那么用gets函数;gets()函数用来从标准输入设备(键盘)读取字符串直到换行符结束,但换行符会被丢弃,然后在末尾添加'\0'字符. 其调用格式为:gets(s);其...