帮忙看看,连接两个字符串,输入后结尾有乱码
#include <stdio.h>int main (void)
{
char stra, strb;
char *pa, *pb;
pa = stra;
pb = strb;
int i = 0, j = 0;
int a;
printf ("请输入第一个字符串:");
fgets (stra, 100, stdin);
printf ("请输入第二个字符串:");
fgets (strb, 100, stdin);
while (*(pa + i) != '\n')
{
i++;
}
while (*(pb + j) != '\n')
{
*(pa + i + j) = *(pb + j);
j++;
}
printf ("合并结果:%s\n", stra);
return 0;
}
可以连接两个字符串,但是输出以后,字符串的结尾有一大堆乱码。
另外,两个while里的东西是不是能简化一下? 需要将最后一个有效字符设置为'\0'
在27行加上一句
stra = '\0'; 楼上正解
合并字符串可以用strncat()函数 也可以这样写
#include <stdio.h>
#include <string.h>
int main (void)
{
char stra, strb;
char *pa, *pb;
pa = stra;
pb = strb;
int i = 0, j = 0;
int a;
printf ("请输入第一个字符串:");
fgets (stra, 100, stdin);
printf ("请输入第二个字符串:");
fgets (strb, 100, stdin);
//while (*(pa + i) != '\n')
// {
// i++;
//}
i = strlen(pa) - 1;
while (*(pb + j) != '\n')
{
*(pa + i + j) = *(pb + j);
j++;
*(pa + i + j) = '\0';
}
printf ("合并结果:%s\n", stra);
return 0;
}
sp1ral 发表于 2017-12-20 20:33
楼上正解
合并字符串可以用strncat()函数
就是不让用函数啊
*(pa + i + j) = '\0';
最后输出之前加上这句就行了.
页:
[1]