c - c中的printf中出现意外的换行符
问题描述
我正在学习 c 中的字符串,并且正在做作业,要求我编写一个程序来在某些情况下替换部分字符串。这是我的源代码(未完成):
#include <stdio.h>
#include <string.h>
int main()
{
char str1[128], str2[128], str3[128];
for (int i = 0; i < 128; i++) //initialize str
{
str1[i] = 0;
str2[i] = 0;
str3[i] = 0;
}
printf("Input the first string:"); //inputs
fgets(str1, 128, stdin);
printf("Input the second string:");
fgets(str2, 128, stdin);
printf("Input the third string:");
fgets(str3, 128, stdin);
if (strncmp(str1, str2, strlen(str2) - 1) == 0) //if the first n charters match (n=length of str2)
{
printf("%s", str3); //print str3
int RemainingChar = 0;
RemainingChar = strlen(str1) - strlen(str2);
for (int i = 0; i < RemainingChar; i++)
{
printf("%c", str1[i + strlen(str2) - 1]); //print the remaining part
}
}
return 0;
}
这是它的运行方式:
Input the first string:asdfghjkl
Input the second string:asd
Input the third string:qwe
qwe
fghjkl
出现意外的换行符。我应该怎么做才能使它像这样输出:qwefghjkl
?
解决方案
该函数fgets
还将行'\n'
尾的换行符存储到字符串中。如果您不希望打印此换行符,则必须在打印字符串之前将其删除。
有关删除换行符的几种方法,请参阅以下问题:
推荐阅读
- javascript - 使用烧瓶编写的 api 从 jQuery 获取 json 的问题
- mysql - SQL 使用列值作为查询计数结果中的列名
- reactjs - 扩展类型上不存在 Typescript 属性
- linux - 尝试从文本文件创建用户,但在 Ubuntu 中不断收到无效的用户名错误
- wordpress - Divi 主题中不需要的水平滚动条
- android - Android Gradle 和 Android Studio
- database - Oracle 容器数据库 12c,使用 JDBC 连接
- python - 通过 Pip 可编辑的不一致 Python 包安装
- php - 如何在 Laravel 中不使用身份验证发送忘记密码的邮件
- javascript - react如何在路由之间传递数据