怎么用 getchar 写入数组
时间: 2023-09-12 14:10:22 浏览: 96
可以使用以下的代码片段:
```c
#include <stdio.h>
int main() {
char arr[100];
int i = 0;
char c;
printf("请输入字符串:\n");
while ((c = getchar()) != '\n') {
arr[i++] = c;
}
arr[i] = '\0';
printf("你输入的字符串是:%s\n", arr);
return 0;
}
```
在这个程序中,我们定义了一个字符数组 `arr`,用于存储输入的字符串。在读取输入时,我们使用 `getchar()` 函数逐个读取字符,并将它们存储在数组 `arr` 中。当读取到换行符时,我们终止输入,并在数组末尾添加一个空字符 `\0`,以表示字符串的结束。最后,我们输出输入的字符串。
相关问题
为什么用s_gets函数给数组赋值显示写入访问权限冲突,字符串数组大小足够大 如何解决
s_gets函数是一个自定义的函数,用于从标准输入中读取字符串,并将其存储到字符数组中。在调用该函数时,需要将字符数组作为参数传递给它。如果您在给数组赋值时出现了访问权限冲突的错误,这可能是因为您在调用s_gets函数时,没有正确地传递数组的大小作为第二个参数。
为了解决这个问题,您可以尝试以下几个步骤:
1.确认字符串数组的大小足够大,可以容纳您想要存储的字符串。
2.在调用s_gets函数时,将字符串数组的大小作为第二个参数传递给它。
3.检查您的代码,确保没有其他地方修改了字符串数组的访问权限。
以下是一个示例代码,其中s_gets函数被正确调用并使用了数组大小参数:
```
#include <stdio.h>
#include <string.h>
#define SIZE 100
char *s_gets(char *str, int n);
int main(void)
{
char str[SIZE];
printf("Please enter a string:\n");
s_gets(str, SIZE);
printf("The string you entered is: %s\n", str);
return 0;
}
char *s_gets(char *str, int n)
{
char *ret_val;
int i = 0;
ret_val = fgets(str, n, stdin);
if (ret_val)
{
while (str[i] != '\n' && str[i] != '\0')
i++;
if (str[i] == '\n')
str[i] = '\0';
else
while (getchar() != '\n')
continue;
}
return ret_val;
}
```
c++,不使用scanf,getchar(),将回车写入字符的方式
可以使用以下方法将回车写入字符:
1. 使用指针和字符数组:
```c
char str[100];
char *ptr = str;
*ptr = 'a';
ptr++;
*ptr = 'b';
ptr++;
*ptr = '\n'; // 写入回车
ptr++;
*ptr = 'c';
ptr++;
*ptr = '\0';
printf("%s", str);
```
2. 使用数组下标:
```c
char str[100];
str[0] = 'a';
str[1] = 'b';
str[2] = '\n'; // 写入回车
str[3] = 'c';
str[4] = '\0';
printf("%s", str);
```
注意:以上两种方法中,必须在字符串末尾加上'\0',否则输出会出现乱码。
阅读全文