[英]How to scan a string with white spaces in structure members in C?
struct Demo{
char a[50];
char b[50];
int a;
};
任何人都可以提供此结构演示的代码,其中a和b将包含具有不同单词的字符串[空白]。
我试过了
scanf("[^\\n]s",name.a); //where name is the object
fgets(name.a,50,stdin);
注意:我们也不能使用gets
方法
因此,如果有其他方法,请提供给我。
将一行用户输入读入char a[50];
其潜在的尾随'\\n'
修剪:
if (fgets(name.a, sizeof name.a, stdin)) {
name.a[strcspn(name.a, "\n")] = '\0'; // trim \n
}
需要进行工作以解决占用过多的长输入行并使用name.a[]
的最后一个元素的问题,例如:
// Alternative
if (scanf("%49[^\n]", name.a) == 1) {
// consume trailing input
int ch;
while ((ch = fgetc(stdin)) != '\n' && ch != EOF) {
;
}
} else { // Handle lines of only \n, end-of-file or input error
name.a[0] = '\0';
}
scanf("%49[^\\n]%*c", name.a)
方法在2种情况下存在问题:
1)输入仅为"\\n"
, name.a
未保存任何内容,而stdin
仍保留'\\n'
。
2)输入超过49个字符(除了'\\n'
), %*c
会占用一个额外的字符,但长输入行的其余部分仍保留在stdin
。
这两个问题也可以使用其他代码来解决。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.