for(;*str2!='\0';str1++,str2++) 这个语法是什么意思?
发布网友
发布时间:2024-10-01 10:38
我来回答
共4个回答
热心网友
时间:2024-10-06 14:24
for语句中前面那个分号就像你说的,前面省略了一句话,一般前面这句话都是一个简单的赋值语句,当然你也可以省略,比如for(int i=0;i<10;i++)。你的这个for循环是判断当前的str2数组的这个元素是不是'\0',如果是的话就退出for循环,不是的话就;str1++,str2++,取str1,str2的下一个元素。
热心网友
时间:2024-10-06 14:25
对省略了
本来分号前面是对一些变量进行初始化的
但是没必要了
比如 上面用个循环输入来输入参数 ,输入完后 那么
上个循环里的循环变量i 的数值 就是次数
下面如果要逆序输出上面刚才输入的话
就可以这样写 for(i>=0;i--) 前面的i初始化就不用写了
你这个很明显是字符串操作 连接还是拷贝
3
45
6
7
8
9
2
0
0 2 9 8 7 6 45 3 Press any key to continue
#include <stdio.h>
main()
{
int i=0,arry[100];
do
{
scanf("%d",&arry[i]);
}while (arry[i++]!=0);
i--; //就像这里的i--一样 本来可以放在for 的第一个分号前的 在外面操作了所以分号前省略了 最常见的就是 i=0;i<10;i++ 如果i在声明时就int i=0;则在第一次运行时没必要再写分号前的 i=0了
for (;i>=0;i--)
{
printf("%d ",arry[i]);
}
}
热心网友
时间:2024-10-06 14:25
for(;*str2!='\0';str1++,str2++) 意思是for这个循环在指针str2指向'\0'这个字符串结束标记时结束,str1++,str2++是指指针指向下一个字符。';'如果没需要是可以省略的。
热心网友
时间:2024-10-06 14:26
一个空语句,就是没必要,这个for循环,只是要判断*str2!='\0',如果不是,再循环,str1++,str2++
for(;*str2!='\0';str1++,str2++) 这个语法是什么意思?
for语句中前面那个分号就像你说的,前面省略了一句话,一般前面这句话都是一个简单的赋值语句,当然你也可以省略,比如for(int i=0;i<10;i++)。你的这个for循环是判断当前的str2数组的这个元素是不是'\0',如果是的话就退出for循环,不是的话就;str1++,str2++,取str1,str2的下一个元素。
if(!strcmp(str1,str2))问的是什么意思?
比较两个字符串。设这两个字符串为str1,str2,若str1=str2,则返回零;若str1>str2,则返回正数;若str1<str2,则返回负数。列如 s1=s2,strcmp(s1,s2) return 0;s1>s2, strcmp(s1,s2)return 1;s1<s2, strcmp(s1,s2) return -1;...
c语言中if(str1[i] == '\0' || str2[i] == '\0')是什么意思
它是前面定义了两个char 数组 str1[] 和 str2[],并且已经输入或初始化了两个字符串,这个语句是出现在循环体中,变量 i 是循环体的工作变量,i 的值在循环中不断+1,它的意思是两个字符串都未达到串尾(因为串尾符是空字符'\0'),即两个串都未结束。
...char* str1 是否自起始位置起包含 char *str2 的内容。
用strncmp或memncmp函数来判断,返回值为0表示包含,否则不包含。strncmp(str1,str2,strlen(str2))==0 表示字符串str1自起始位置起包含str2的内容 memncmp(str1,str2,strlen(str2))==0表示字符串str1自起始位置起包含str2的内容
str2[j] = '\0';在这里的作用是?
'\0'是字符串结束的标志,一个字符数组的末尾加上'\0'后就可以看成字符串,进行字符串的一些操作,例如:char a[3]={'1','2'};a[2]='\0';puts(a); //此时就可以用puts函数输出a
用函数实现对两个字符串str1和str2的比较:strcmp (str1,str2)
这个函数是 字符串内字符自左向右逐个比较(按ASCII值大小相比较),直到出现不同的字符或遇'\0'为止。当str1<str2时,返回值<0 当str1=str2时,返回值=0 当str1>str2时,返回值>0 程序如下:int strcmp(char * str1,char * str2){ int i=0,temp=0,ans=0;while((str1[i]!='\0...
请问strcpy(str1,str2)时,str2会把末尾的'\0’也给复制到str1中且覆 ...
strcpy复制时,会把末尾的'\0’也给复制进去,且覆盖一个字符。例如:main(){ char s1[]="abcd12349";char s2[]="xyz";int i;strcpy(s1,s2);for (i=0;i<10;i++) printf("%c|",s1[i]);} 打印出:x|y|z| |1|2|3|4|9| | 可以看出,z后面那个字符覆盖了。如果用 printf(...
...明白为什么要在复制完成后加入这个 str2[i]='\0'。
因为str2[80]没有初始化的时候。编译器默认分配的字符,就是那些乱码 烫~~~输出puts函数是遇到'\0'结束符就结束字符串的输出,没有结束符标志自然全部输出,会有乱码 如果你不进行str2[i] = '\0';赋值的话。那你在最开始 str2[80]要进行初始化 str2[80]=0;这样就一样的效果。有问...
strcat(str1,str2)的功能
说明strcat(str1,str2)把str1(包括“\0”)复制到str2后面(删除str2原来末尾的“\0”)。strcat是c语言的函数,在C++中存在于头文件中。externchar*strcat(char*dest,char*src);用法#include在C++中,则存在于头文件中。功能把src所指字符串添加到dest结尾处(复盖dest结尾处的'\0')并添加'\...
...str2,并将字符串 str2连接str1后面,并将结果显示出来
include "stdio.h"int main(int argc,char *argv[]){char str1[301],str2[101];int i,j;printf("Please enter 2 strings...\n");scanf("%200s%100s",str1,str2);//限制长度以保证不溢出for(j=i=0;str1[i];i++);//测str1的结尾while(str1[i++]=str2[j++]);//把str2...