所以我试图从输入中读取定义数量的字符。假设我想读取 30 个字符并将它们放入一个字符串中。我设法使用for循环来做到这一点,并清理了缓冲区,如下所示。
for(i=0;i<30;i++){
string[i]=getchar();
}
string[30]='\0';
while(c!='\n'){
c=getchar(); // c is some defined variable type char
}
这对我有用,但我想知道是否还有其他方法可以做到这一点。我正在研究,其中一些人正在使用 sprintf() 来解决这个问题,但我不明白该解决方案。然后我发现你可以将 scanf
与 %s
一起使用。其中一些在想要读取 3 个字符时使用 %3s
。我自己尝试过,但是这个命令只读取字符串直到第一个空格。这是我使用的代码:
scanf("%30s",string);
当我用这行代码运行程序时,如果我写:“今天是美好的一天。正在下雨,但没关系,我喜欢下雨。”我认为前 30 个字符将被保存到字符串中。但是当我尝试使用 puts(string); 读取此字符串时,它只显示“Today”。
如果我使用 scanf("%s",string)
或 gets(string)
如果输入的字符数为大于 30。
最佳答案
您可以使用scanf("%30[^\n]",s)
实际上,这就是您如何设置要输入的字符。这里,克拉符号'^'
表示否定
,即。这将输入除 \n
之外的所有字符。 %30
要求输入 30 个字符。所以,你来了。
关于c - 从输入中读取具有定义字符数的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32047175/