我如何使用 C 解决与 string_Concatenation 有关的这个问题?
How do i solve this question related to string_Concatenation using C?
我是编码新手。这是来自 Hackerrank 上 #30 天代码的问题。
但是,我无法解决它。谁能告诉我这里的问题是什么来帮助我?
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
int i = 4;
double d = 4.0;
char s[] = "Hello ";
// Declare second integer, double, and String variables.
int j;
char *ptr=s;
double c;
char p[100];
// Read and save an integer, double, and String to your variables.
scanf("%d",&j);
scanf("%lf",&c);
scanf("%[^\n]%*c",p);
// Print the sum of both integer variables on a new line.
printf("%d\n",i+j);
printf("%.1lf\n",c+d);
printf("%s%s",s,p);
// Print the sum of the double variables on a new line.
// Concatenate and print the String variables on a new line
// The 's' variable above should be printed first
return 0;
}
正在显示结果
Input:
12
4
Output:
16
8.0
Hello o}┌vl
╤
如您所见,我想打印连接的字符串,但它甚至不允许我将数据输入到字符串中。
我猜你按了 Enter 键进行所有输入?
Enter 键将作为换行符添加到输入缓冲区中。
%[^\n]
格式 停止 阅读一旦找到换行符。它读取的第一个字符 是 换行符。因此它不读取任何内容,并且数组 p
将保持未初始化状态 indeterminate 内容。
您需要告诉 scanf
跳过前导换行符,这是通过在格式字符串中添加显式 space 来完成的:
scanf(" %99[^\n]",p);
// ^
// Note space here
注意我限制输入99个字符,不会溢出缓冲区。还要注意,您不需要阅读字符串后的换行符。
我是编码新手。这是来自 Hackerrank 上 #30 天代码的问题。 但是,我无法解决它。谁能告诉我这里的问题是什么来帮助我?
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
int i = 4;
double d = 4.0;
char s[] = "Hello ";
// Declare second integer, double, and String variables.
int j;
char *ptr=s;
double c;
char p[100];
// Read and save an integer, double, and String to your variables.
scanf("%d",&j);
scanf("%lf",&c);
scanf("%[^\n]%*c",p);
// Print the sum of both integer variables on a new line.
printf("%d\n",i+j);
printf("%.1lf\n",c+d);
printf("%s%s",s,p);
// Print the sum of the double variables on a new line.
// Concatenate and print the String variables on a new line
// The 's' variable above should be printed first
return 0;
}
正在显示结果
Input:
12
4
Output:
16
8.0
Hello o}┌vl
╤
如您所见,我想打印连接的字符串,但它甚至不允许我将数据输入到字符串中。
我猜你按了 Enter 键进行所有输入?
Enter 键将作为换行符添加到输入缓冲区中。
%[^\n]
格式 停止 阅读一旦找到换行符。它读取的第一个字符 是 换行符。因此它不读取任何内容,并且数组 p
将保持未初始化状态 indeterminate 内容。
您需要告诉 scanf
跳过前导换行符,这是通过在格式字符串中添加显式 space 来完成的:
scanf(" %99[^\n]",p);
// ^
// Note space here
注意我限制输入99个字符,不会溢出缓冲区。还要注意,您不需要阅读字符串后的换行符。