Arrays scanf将换行符存储为数组的第一个元素
嗨,我有一个关于将数据输入数组的问题 为什么scanf将Arrays scanf将换行符存储为数组的第一个元素,arrays,newline,scanf,Arrays,Newline,Scanf,嗨,我有一个关于将数据输入数组的问题 为什么scanf将'\n'存储到此代码中数组的第一个元素中 #include <stdio.h> #include <stdlib.h> #define MAX 10 int main (void) { // Global declarations int str_length; char str[MAX]; int count; char temp; // St
'\n'
存储到此代码中数组的第一个元素中
#include <stdio.h>
#include <stdlib.h>
#define MAX 10
int main (void)
{
// Global declarations
int str_length;
char str[MAX];
int count;
char temp;
// Statements
// prompt user for string length
printf("Enter string length: ");
scanf("%d", &str_length);
printf("Enter string: ");
// input string
for(count = 0; count < str_length; count++)
{
scanf("%c", &str[count]);
printf("%c", str[count]);
}
for(count = 0; count < str_length; count++)
{
temp = str[0]; // set temp to the first element
str[count] = str[count+1]; // set the next element to be the first element
str[str_length-1] = temp; // swap the first element and the last element
puts(str);
}
system("PAUSE");
return 0;
}
#包括
#包括
#定义最大值10
内部主(空)
{
//全球宣言
int str_长度;
字符str[MAX];
整数计数;
焦炭温度;
//声明
//提示用户输入字符串长度
printf(“输入字符串长度:”);
scanf(“%d”和str_长度);
printf(“输入字符串:”);
//输入字符串
对于(计数=0;计数
当我在数组中输入1234567890
而不是1作为第一个元素时,第一个元素是换行符'\n'
提前感谢您的帮助。在获得行的长度后,您似乎没有使用\n
// prompt user for string length
printf("Enter string length: ");
scanf("%d", &str_length);
您需要做的就是在这一行之后添加一个%c扫描并丢弃它。因为当您到达这里时
scanf("%d", &str_length);
用户键入类似4的内容,然后输入enter,缓冲区中填充了4\n
。
4转到str\u length
,而\n
停留在缓冲区。
因此,您需要清理缓冲区,只需添加:
fflush (stdin);
注意当declearchar str[MAX]
并且用户在其中输入char时,您需要在字符串末尾添加null terminator。
加上
str[str_length] = '\0';
您所说的消费是什么意思\n?您能详细解释一下吗?因为我真的想知道printf没有被使用的原因。非常感谢stdin中的扫描读取,您正在输入一个数字,后跟\n。%d的scanf将不会使用尾随\n。你需要把它吃掉然后扔掉。