输入字符串用getchar码
时间: 2023-08-28 07:33:34 浏览: 91
可以使用以下代码读取输入字符串并以字符数组的形式存储:
```c
#include <stdio.h>
int main() {
char str[100];
int i = 0;
char c;
printf("请输入字符串:");
while ((c = getchar()) != '\n' && i < 99) {
str[i++] = c;
}
str[i] = '\0';
printf("输入的字符串为:%s\n", str);
return 0;
}
```
在这个示例中,我们定义了一个字符数组 `str` 来存储输入的字符串,将计数器 `i` 初始化为 0,然后使用 `getchar()` 函数逐个读取输入的字符,并将其存储在 `str` 数组中。当读取到换行符或者 `str` 数组已满时,循环结束。最后,我们在 `str` 数组结尾加上一个空字符,以标记字符串的结束位置。
相关问题
getchar读入字符串
回答: getchar函数是用来读取下一个字符的函数,返回的是ASCII码或EOF。它可以读取ASCII码表中的任何字符。\[1\] 但是要注意,在使用getchar函数之前,需要清空输入缓冲区,以避免不必要的问题。另外,如果想读取含有空格等字符的字符串,可以使用scanf函数替代getchar函数,因为scanf函数只有在格式化为"%c"时才会读取回车符。\[2\] 如果在调用scanf函数之后再调用getchar函数,需要注意清空缓冲区,否则会读取到缓冲区中的剩余字符,包括回车符。\n\[3\]
#### 引用[.reference_title]
- *1* *2* *3* [C语言函数——getchar()函数使用注意点——回车字符的读取](https://blog.csdn.net/xh1605004242/article/details/125898484)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
以下程序用来对从键盘上输入的两个字符串进行比较,然后输出两个字符串中第一个不相同字符的ASCII码之差。例如:输入的两个字符串分别为abcdef和abceef,则输出为-1。请改正程序中的错误,使程序能得到正确的结果。包含错误的源程序如下: #include <stdio.h> void main() { char str1[100],str2[100]; int i,s; printf("\n input string 1:\n"); getchar(str1); printf("\n input string 2:\n"); getchar (str2); i=0; while((str1[i]!=str2[i]&&(str1[i]=='0')) i++; s=str1[i]+str2[i]; printf("%d\n",s); }
以下是修改后的程序:
```c
#include <stdio.h>
int main() {
char str1[100], str2[100];
int i = 0, s;
printf("\n input string 1:\n");
scanf("%s", str1);
printf("\n input string 2:\n");
scanf("%s", str2);
while (str1[i] == str2[i] && str1[i] != '\0') {
i++;
}
if (str1[i] == '\0' && str2[i] == '\0') {
printf("The two strings are equal.\n");
} else {
s = str1[i] - str2[i];
printf("The ASCII difference between the first different characters is %d.\n", s);
}
return 0;
}
```
修改说明:
1. `void main()` 应该改为 `int main()`,因为 `main()` 函数必须有返回值;
2. `getchar()` 函数只能读取单个字符,应该使用 `scanf()` 函数读取字符串;
3. 在 `while` 循环中,判断条件应该改为 `str1[i] == str2[i] && str1[i] != '\0'`,否则如果两个字符串长度不同,会出现数组越界的情况;
4. 在输出结果前,应该判断两个字符串是否完全相等,如果相等,则输出提示信息,否则才计算第一个不相同字符的ASCII码之差。
阅读全文