不用strcpy函数,将字符数组s2中的全部字符拷贝到s1中,将'\0'也拷贝过去,'\0'之后的字符不拷贝

#include <stdio.h>
#include <string.h>
void main()
{
char s1[20]={{' '}},s2[20];
int i;
gets(s2);
for(i=0;i<=19;i++)
{
s1[i]=s2[i];
printf("%c",s1[i]);
if(s2[i]=='\0') break;
}
printf("\n");
}
我想问下我程序哪错了···为什么我输入'\0'循环不会中断...
那\0是如何输入的·??按回车那个我当然知道···
我突出的是··\0后还有字符,但遇到了\0,\0照样复制···而后面的字符不复制

第1个回答  推荐于2016-11-20
#include <stdio.h>
#include <string.h>
void main()
{
char s1[256]={0},s2[256]={0};
int i, l;
gets(s2);
l = strlen(s2);
for(i=0;i<l;i++)
{
s1[i]=s2[i];
}
s1[i] = s2[i];
printf("%s\n", s1);
}追问

你这跟我的一样....

追答

你到底想说什么啊,按你所说你要把'\0'复制过去但是后面的字符串不复制,问题是你很搞笑懂不,你用gets得到的字符串只有一个字符串结束标志'\0'在末尾,哪来的你说的'\0'后的字符串???我告诉你'\0'不是输入的,而是回车后系统自动在字符串末尾加上的,作为结束标志!

追问

不用strcpy函数,将字符数组s2中的全部字符拷贝到s1中,将'\0'也拷贝过去,'\0'之后的字符不拷贝
我就是想突出题目的最后一句话

追答

#include
#include
void main()
{
char s1[20]={{' '}},s2[20];
int i = 0;
gets(s2);
while(1)
{
s1[i++]=s2[i++];
if(s2[i]=='\0') break;
}
printf("%s\n", s1);
}
那这样不就解决了

本回答被提问者采纳
第2个回答  2012-04-18
你可以按回车 这样就转化为\0 你输入'\0'仅仅是四个字符罢了追问

那\0是如何输入的·??按回车那个我当然知道···
我突出的是··\0后还有字符,但遇到了\0,\0照样复制···而后面的字符不复制···

追答

if(s2[i]=='0')break;后面在加个s1[i-1]='\0';

追问

你这样做就突出不了··s2中\0后还有字符

第3个回答  2012-04-18
你的程序是没错的 你输入的是‘\0’这样吗 它会将你的单引号 存储在s2[0]以此存储 所以编译器还是把'\0'看成一个字符串追问

我输得就是\0没有单引号···其实我最主要就是问如何输入空操作符

追答

你什么都不输入直接回车不就是空操作吗

追问

你这样做就突出不了··s2中\0后还有字符

用C语言编程序:将字符数组s2中的全部字符复制到字符数组s1中。不用str...
include<stdio.h>#include<conio.h>int main(){char s1[100],s2[]="I love CHINA!";int i;for(i=0;s2[i]!='\\0';i++)s1[i]=s2[i];s1[i]=s2[i];printf("s1=%s\\n",s1);getch(); return 0;}祝你成功!

编写一个程序,不用Strcpy函数,怎样将字符数组S2的全部字符复制到字符...
4、不用Strcpy函数,将字符数组S2的全部字符复制到字符数组S1中for循环将S2中的字符一个一个的读出来,再用for循环一个一个的写入数组S1,数组就是用来循环的。5、在程序设计中,为了处理方便, 把具有相同类型的若干变量按有序的形式组织起来。这些按序排列的同类数据元素的集合称为数组。6、在C语言...

用gets和puts函数编写程序,不用strcpy函数,将字符组s2中的全部字符复制...
include <stdio.h>void func(char *d,char *s){ while(*d++=*s++);}int main(){ char s1[1000],s2[1000]; gets(s2); func(s1,s2); puts(s1); return 0;}

C语言中如何编写一个字符串复制函数,并在主函数中调用它。
具体实现方法可以参考如下程序:include<stdio.h>void str_copy(char *str1, char *str2) \/\/ 字符串复制函数{ while(*str1++ = *str2++); \/\/ 将字符串str2中的每个字符逐个复制到str1中,直到遇到字符串结束字符'\\0'}void main(){ char s1[] = "abcd"; char s2[5]; ...

C语言问题。把S2的全部字符复制到S1中 不得使用strcpy函数
第一行s2声明错误。如果声明长度为12个的字符串,那应为 char s2[13];

不使用strcpy()函数,用字符指针的形式将一个字符串的内容复制到另一个...
memcpy((void*)dest, (void*)source, strlen(source)+1);

编写一个程序,将字符数组s2中的全部字符复制到字符数组s1中,
下面是strcpy的一种实现,仿写就行了char *strcpy(char s1[], char s2[]){ int i = 0; while ((s1[i] = s2[i]) != '\\0') ++i; return s1;}

编写一个程序,将字符串computer赋给一个字符数组,然后从第一个字母...
include <stdio.h> include <string.h> void main(int argc, char **argv){ char str[] = "computer";char *pstr;int i;pstr = str;for(i = 0; i < strlen(str); i += 2){ printf("%c", *(pstr + i));} printf("\\n");} ...

关于C语言编程,展开缩写字符串的问题,详细请见补充
另外主要的问题有很多。首先 for(i=0;i<n;i++)s2[i]=s1[i];并没有实现s2到s1的拷贝,C中每个字符串都已默认以‘\\0’这个字符串结尾,如果没有遇到这个字符,则在输出时认定字符串没有结束。改成 for(i=0;i<n+1;i++)s2[i]=s1[i];或strcpy(s2,s1);另外 for(k=0;k<=j;k++)...

输入两个字符串s1和s2,然后将s2接在s1后面,输出连接后的字符串,不可以...
char * myStrcat(char* destStr,const char* srcStr) \/\/方法一,数组操作 { int srcLen = 0;int destLen = 0;while(srcStr[srcLen]!='\\0'){ srcLen++;} while(destStr[destLen]!='\\0'){ destLen++;} for(int i = 0 ; i<srcLen ; i++){ destStr[destLen++] = srcStr[...

相似回答