c-如何打印空格分隔的字符串?我得到的输出没有空格


#include<stdio.h>
#include<stdlib.h>
int main(){
int n;
scanf("%d",&n);
char str[101];
for(int i=0;i<n;i++){
scanf("%s ",&str[i]);
}
printf("%s ",str);
}

我得到的输出没有空间例如,如果输入是(a p p l e(,我得到的是(苹果(,但我需要得到(a p l e

格式"%s"用于读取一系列字符,直到遇到空白,

如果要使用循环,请使用转换说明符%c,而不是转换说明符%s

例如

int i = 0;
while ( i < n && scanf( "%c", str + i ) == 1 && str[i] != 'n' ) ++i;
str[i] = '';

您可以使用标准函数fgets来代替循环,例如

#include <stdio.h>
#include <string.h>
//...
fgets( str, n + 1, stdin );
str[ strcspn( str, "n" ) ] = '';
puts( str );

注意,由于此声明,表达式n + 1不应大于101

char str[101];

在上一个printf中,您只是在调用String,而不是放空格。

您需要另一个for来逐个调用String,并在它们之间放置空格。

像这样:

#include<stdio.h>
#include<stdlib.h>
int main(){
int n;
scanf("%d",&n);
char str[101];
for(int i=0;i<n;i++){
scanf("%s ",&str[i]);
}
for(int i=0;i<n;i++){
printf("%c ",str[i]);
}
}

如果您将scanf更改为scanf(" %[^n]",&str[i]);,您应该会得到所需的结果。%s查找以空格分隔的字符串,而%[^n]将把整个字符串带到换行符。

相关内容

  • 没有找到相关文章

最新更新