C语言,关于字符串函数的运用

来源:百度知道 编辑:UC知道 时间:2024/07/04 11:40:42
输入10个字符串,然后按顺序把这10个字符串的第一个元素复制到另一个数组中存放,然后输出这个数组。
#include<stdio.h>
#include<string.h>
int main(void)
{
char b[30];
char a[10][20];
int i=0;
while(gets(a[i])&&i<10)
++i;
strncpy(b,a[0],1);
for(i=1;i<10;i++)
strncat(b,a[i],1);
b[i]='\0';
puts(b);
return 0;
}
高手帮我看看我这个程序为什么不能正确运行,问题出在哪里?谢谢了!

这一行while(gets(a[i])&&i<10)
改为 while(i<10 && gets(a[i]))
这一行char b[30];改为char b[30]="";就没问题了。
因为,如果按照你原来的写法,当i为10时还是会gets(a[i]) ,然后才判断i<10
,即越界了

#include<stdio.h>
#include<string.h>
int main(void)
{
char b[30]="";
char a[10][20];
int i=0;
for(i=0;i<10;i++)
gets(a[i]);
for(i=0;i<10;i++)
strncat(b,a[i],1);
b[i]='\0';
puts(b);
return 0;
}
//改正如上 请验证

strncpy写错了,应该为
strcpy

strncpy 函数好像是将 a[i]复制给b[0],所以有 b[0]=a[9][0],b[10]='\0'.