|
发表于 2020-3-6 22:06:33
|
显示全部楼层
百度来的一些资料:fgets()函数读取到它所遇到的第一个换行符的后面,或者读取比字符串的最大长度少一个的字符,或者读取到文件结尾。然后fgets()函数向末尾添加一个空字符以构成一个字符串。如果在达到字符最大数目之前读完一行,它将在字符串的空字符之前添加一个换行符以标识一行结束。
问题出在有时字符串的结尾处可能多出一个换行符,我们需要把它去掉。
查看汇编代码也会发现多了一个0xA,这个对应的ascii码就是换行符,所以要去掉
我的解法直接用指针处理下得了
- int main()
- {
- char str1[MAX];
- char str2[MAX];
- char *p1, *p2;
- int num1, num2,i;
- printf("请输入第一个字符串:");
- fgets(str1, MAX, stdin);
- printf("请输入第二个字符串:");
- fgets(str2, MAX, stdin);
- p1 = str1;
- p2 = str2;
- num1 = strlen(p1);
- num2 = strlen(p2);
- /*
- num1 = strlen(p2);
- num2 = strlen(p1);
- // p1 = p1 + num2;
- strncat(str1, str2, num2);
-
- */
-
- for ( i = 0; i < num2-1; i++) {
- *(p1 + num1 - 1 + i) = *(p2 + i);
- printf("%c\n", *(p2 + i));
- }
- *(p1 + num1 - 1 + i) = '\0';
- printf("%s\n", p1);
- return 0;
- }
复制代码
|
|