如何在 C 中连接字符串时用一个 space 更改换行符?
How to change newline character with one space when concatenating strings in C?
首先,我必须提到我只是作为初学者学习 C 中的字符串。
我想要做的是从用户那里获取 2 个字符串作为输入并将它们连接起来。所以这就是我所做的:
char firststring[40], secondstring[40];
printf ("Enter first string: ");
fgets (firststring, 40, stdin);
printf ("Enter second string: ");
fgets (secondstring, 40, stdin);
strcat(firststring, secondstring);
printf("%s", firststring);
问题在于,当用户输入第一个字符串时,fgets 也会读取换行符,因此输出如下所示:
Hello
World
我尝试使用 puts
而不是 fgets 并且效果很好,但是太多人说不要使用该功能。然后我发现我可以在第一个 fgets
之后使用 strcspn
来删除换行符,但这并没有给我我想要的单词之间的 space 。
期望的输出:Hello World
我得到了什么:HelloWorld
有什么建议吗?
您可以通过以下方式
printf ("Enter first string: ");
fgets (firststring, 40, stdin);
printf ("Enter second string: ");
fgets (secondstring, 40, stdin);
size_t n = strcspn( firststring, "\n" );
firststring[n] = ' ';
strcpy( firststring + n + 1, secondstring );
前提是 firststring 有足够的 space 来附加存储在数组 secondstring 中的字符串。
这是一个演示程序
#include <stdio.h>
#include <string.h>
int main(void)
{
enum { N = 40 };
char firststring[N], secondstring[N];
printf( "Enter first string: " );
fgets( firststring, N, stdin );
printf( "Enter second string: " );
fgets( secondstring, N, stdin );
size_t n = strcspn( firststring, "\n" );
firststring[n] = ' ';
strcpy( firststring + n + 1, secondstring );
puts( firststring );
return 0;
}
它的输出可能看起来像
Enter first string: Hello
Enter second string: World!
Hello World!
从调用 fgets
输入的字符串中删除换行符的一般方法如下
string[ strcspn( string, "\n" ) ] = '[=13=]';
首先,我必须提到我只是作为初学者学习 C 中的字符串。 我想要做的是从用户那里获取 2 个字符串作为输入并将它们连接起来。所以这就是我所做的:
char firststring[40], secondstring[40];
printf ("Enter first string: ");
fgets (firststring, 40, stdin);
printf ("Enter second string: ");
fgets (secondstring, 40, stdin);
strcat(firststring, secondstring);
printf("%s", firststring);
问题在于,当用户输入第一个字符串时,fgets 也会读取换行符,因此输出如下所示:
Hello
World
我尝试使用 puts
而不是 fgets 并且效果很好,但是太多人说不要使用该功能。然后我发现我可以在第一个 fgets
之后使用 strcspn
来删除换行符,但这并没有给我我想要的单词之间的 space 。
期望的输出:Hello World
我得到了什么:HelloWorld
有什么建议吗?
您可以通过以下方式
printf ("Enter first string: ");
fgets (firststring, 40, stdin);
printf ("Enter second string: ");
fgets (secondstring, 40, stdin);
size_t n = strcspn( firststring, "\n" );
firststring[n] = ' ';
strcpy( firststring + n + 1, secondstring );
前提是 firststring 有足够的 space 来附加存储在数组 secondstring 中的字符串。
这是一个演示程序
#include <stdio.h>
#include <string.h>
int main(void)
{
enum { N = 40 };
char firststring[N], secondstring[N];
printf( "Enter first string: " );
fgets( firststring, N, stdin );
printf( "Enter second string: " );
fgets( secondstring, N, stdin );
size_t n = strcspn( firststring, "\n" );
firststring[n] = ' ';
strcpy( firststring + n + 1, secondstring );
puts( firststring );
return 0;
}
它的输出可能看起来像
Enter first string: Hello
Enter second string: World!
Hello World!
从调用 fgets
输入的字符串中删除换行符的一般方法如下
string[ strcspn( string, "\n" ) ] = '[=13=]';