C语言问题,字符串、数组.下面三个题目输出的分别是什么?

作者&投稿:东野疯 (若有异议请与网页底部的电邮联系)
C语言字符串数组找一个最长的字符串,下面这段代码一直输出第一个,是什么问题~


char* fun(char (*sq)[M])
{ int i; char *sp;
sp=sq[0];
for(i=0;i<N;i++)
if(strlen( sp)<strlen(sq[i]))
sp=sq[i] ;
return *(sq);//要返回sp不是sq啊。。。这变量订得这麼像干嘛
}

strlen是遍历每个字符,直到遇到末尾的结束符('\0')结束,所以能计数。
但month定义为字符串数组,本身是数组,数组没有结束符,month[j++]是某一个字符串,所以month[j++]!=0这句是没有任何意义的。数组的长度在运行时是未知的(c语言不会判断数组越界)。这也就是大多数以数组为参数的函数都还要另外提供一个长度参数len的原因。

三个都是错误的,都有有语法错误,编译都过不了!

  1. char str的str前少了个*。改错后输出yes!。

  2. char str的str后少了一对[],且在{}中的'!'后少了,'\0',改错后输出yes!。

  3. #define...后面多了分号。若无分号,输出yes!。



y
y
yes


C语言字符串问题
1. 字符串初始化,如果逐个赋值的话,系统不一定会自动添加'\\0',除非指定了长度且指定的长度大于等于你赋值的字符的个数加1,即最小为你赋值的字符个数加1。假设你指定的字符个数为n,长度为len,则系统会将剩下的(len-n)个元素都赋值为'\\0',当n等于len时,不会添加任何'\\0'。之所以出现...

c语言的问题 连个字符串相连的问题 求解释
abc\\0 defg\\0 (\\0是结束标志)进行p1后第一个字符串变为 abcdefg 注意此时没有\\0,所以这时会发生乱七八糟的无厘头错误。因为while(str1[j]!='\\0')使得当碰到的结束标志时后面的赋值语句以及自加语句不执行 解决办法,在p1函数的最后面加上 str[i]=str[j];即可。祝你愉快顺利的解决问题 ...

C语言问题,将两个字符串连接起来,要求不用strcat()函数。
void main(){ char lj(char m[100],n[100]);\/\/长度任意定,但必须分别大于你要连接的两个字符串 char a[100],b[100];gets(a);gets(b);lj(a,b);puts(a);} char lj(char m[100],n[100]){ int i,j;for(i=0;m[i];i++);for(j=0;n[j]!='\\0';i++,j++)m[i]...

C语言问题。数组字符串长度问题。我写的对不对啊,分为实际长度和函数计...
char s[10]={'a','b','c'}; \/\/实际占用10个字节,strlen计算长度为3,正确 char s[]={'a','b','c'}; \/\/实际占用3个字节,strlen计算长度为(随机值),不是3,因为这个只明确了s是一个有三个元素的字符数组,第四个元素已经是非法空间了。char s[3]="abc"; \/\/编译通...

C语言问题:指针变量,数组名,字符串常量的区别。
(A)s和p完全相同 a的类型是cha数组 p的类型是char指针 不一样 (B)数组s中的内容和指针变量p中的内容想等 数组s中的内容是:"china"指针变量p中的内容是:s[0]的地址(&s[0])一个是字符串 一个是地址 不一样 (C)s数组长度和p所指向的字符串长度相等 s数组长度包括 '\\0'的位置 p所指向...

c语言问题 高手帮忙 字符数组 问题空字符'\\0' 是空格吗
空字符'\\0' 用 %c 形式输出,是一个空格。空字符'\\0' 用 %d 形式输出,是一个数字 0。空格字符 ' ' 用 %c 形式输出,是一个空格。空格字符 ' ' 用 %d 形式输出,是一个数值32。'\\0' 是字符串结束标记,strlen(c) 长度计算,只计算到 '\\0' 以前那个字符。'\\0' 是字符串结束标记...

C语言问题,怎样将字符串数组中的一个元素赋给另一个字符串数组中的某...
字符串 赋给 字符串,要用 strcpy() 这类函数, 例如:char str1[2][10],str2[2][10]={"ABCDEFG", "01234567"};strcpy(str1[1], str2[0]);strcpy(str1[0], str2[1]);printf("%s %s", str1[0],str1[1]);--- 字符数组中的一个元素, 赋给另一个字符数组中的一个元素:inc...

C语言字符串问题,求正确答案和解释 假设已定义char a[10]和char *p=a...
正确答案是D A错误,因为a[10]代表一个字符是吧,不能赋值字符串 B错误是因为 数组名不能当左值,也就是数组名不能被赋值 C和A同样的错误,*p代表的是a[0]D是正确的给指针赋值字符串是可以的

c语言问题求解!!!谢谢!!!
+=,-= 是赋值运算符,优先级仅比‘,’高,是明显低于算术运算符‘*’的,而且赋值运算符的结合性是“从右往左”(也就是把右值赋给左值)。当然前提是已经给a赋值了,那么计算的顺序是,a*a -> a = a-(a*a) -> a= a+(a-a*a)2、字符串长度问题。字符串赋初值时,系统自动给字符...

C语言问题:将a b字符串中较小者存放在数组c的对应位置上
已经改好了,给:include<stdio.h> include<string.h> void main(){ int k=0;char a[80]={NULL},b[80]={NULL},c[80]={NULL},*p=NULL,*q=NULL; \/\/注意数组初始化的方式 p=a; q=b;printf("请向数组a中存放字符串:");gets(p);printf("请向数组b中存放字符串:");gets(q);...

广陵区14734412523: C语言的问题,字符串数组初始化 a[30]={\0}、a[30]={0}、a[30]={"0"} -
劳陈盐酸: 第一个写法错误,会有编译错误的,第二个写法也不对,但是编译不会报错,数组还是没有初始化,第三个是初始化数组,只是a[0]="0".

广陵区14734412523: C语言问题高手来回答.字符串数组名代表的是什么? 下面的这个字符串数组多余部分是存什么? -
劳陈盐酸: str等效于&str[0]是个地址,编译器会认为它是char格式的地址,所以你+1时的确会指向下一个字符地址,实际上str[14] = "ab" 与str[14] ={'a' ,'b'}是一样的,剩下的就不改变原值,就是该内存段原本的状态(高级优化),或者声明时就把全部地址填入0 问题二是错误的,至少c语言规范没有这种语法,str是个地址,也就是int,无法用字符串来赋值 问题三,形参数组是一个指向数组的指针,一个地址而已

广陵区14734412523: C语言 字符串/字符数组元素个数的问题 -
劳陈盐酸: 这个问题确实没注意过,不过可以解释 C语言将双引号的都当做字符串,并且会在字符串后面自动加一个空字符'\0'1, 因为是字符串 + 空字符,所以等于92, 没有字符串,所以没空字符,所以等于83,有字符串"678",所以等于9 //楼主如果不理解可以试试这个例子 char a[] = "1"; char b[] = {'1'}; printf("%d %d\n", sizeof(a), sizeof(b) );

广陵区14734412523: C语言 数组 输入三个字符串,输出最大的字符串 只要公式哦 -
劳陈盐酸: #include//int strcmp(const char *s1, const char *s2); rev: s1>s2 1,>:s[0,2]; char *pstr =strcmp(s[0], s[1]) > 0 ? s[0] : s[1]; pstr =strcmp(s[2], pstr)

广陵区14734412523: 简单C语言字符串数组编程问题 -
劳陈盐酸: /* Note:Your choice is C IDE */#include "stdio.h" void main() { char str[20],max,min; int pos_max,pos_min,i; printf("输入字符串:\n"); gets(str); max=str[0]; min=str[0]; pos_max=0; pos_min=0; for(i=0;str[i]!='\0';i++) { if(max { max=str[i]; pos_...

广陵区14734412523: C语言中的字符串,数组问题 -
劳陈盐酸: 建议立刻更换开发环境 windows上面的话, 使用vc2005或者vc2008 编程环境的问题已经影响到你学习了! 正常的编译器必须提示这几处使用错误的!scanf需要的是地址, 而数组声明本身就是地址, 所以可以直接用数组名, 而其他内置类型必须用有取地址符号才能正常运行! int i;char c; char s[2]; scanf("%d %c %s", &i, &c, s);至于那个超出5个也能正常, 又是你编译器的影响!!这种情况由于覆写到数据区之外的系统堆栈, 在你程序结束时应该报错才对!你的看法是正确的, 字符串存入的是s而不是s[0]总之, 尽早更换编译器!

广陵区14734412523: C语言问题 输入三个字符串,按由小到大的顺序输出 -
劳陈盐酸: 1、修改代码 char temp[100]; temp==q1; q1==q2; q2==temp; ==换成=,=才是赋值运算符. 2、换用其他方法 可以使用三个数组,或者是一个二维数组来存储字符串,同时定义一个指针数组,指向三个字符串的首地址,然后对指针数组进行排...

广陵区14734412523: C语言字符串常量,字符数组占内存大小问题? -
劳陈盐酸: 用函数求的长度其实就是字符串长度,而非占内存大小.因此长度是4,占内存是5,最后有个'\0'做结束符,不是'\n'. 字符数组如果是字符串就是这规则,否则不是

广陵区14734412523: C语言调用一个函数输入3个字符串并返回给数组 -
劳陈盐酸: 你的程序修改如下 #include "stdio.h" #define N 3 #define M 80 void _kf(char b[N][M]); int main(void) { int i;char a[N][M];puts("请输入3个字符串");_kf(a);for(i=0;i<N;i++)puts(a[i]);system("PAUSE"); } void _kf(char b[N][M]) {int i;for(i=0;i<N;i++)gets(b[i]);}

广陵区14734412523: C语言问题:下面的哪些正确哪些错误 char buf[]="abc"; char buf[3]={'a','b','c'}; -
劳陈盐酸: 单从你给你的定义来看,两个都正确 第一个是定义一个字符串数组,它的长度是4,因为最后自动有一位'\0' 第二个就是一个字符数组,长度是3 【补】 正确

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网