C语言实现字符串输入并判断长度
时间: 2023-09-14 17:07:17 浏览: 168
可以使用C语言的标准库函数`fgets()`和`strlen()`来实现字符串输入并判断长度。
示例代码如下:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str[100];
printf("请输入字符串:");
fgets(str, sizeof(str), stdin);
// 去除字符串末尾的换行符
str[strcspn(str, "\n")] = '\0';
printf("输入的字符串为:%s\n", str);
printf("输入的字符串长度为:%d\n", strlen(str));
return 0;
}
```
解释一下代码:
1. 定义一个字符数组`str`,用于存储输入的字符串;
2. 使用`fgets()`函数从标准输入流(即键盘)读取输入的字符串,第二个参数指定了最大读取的字符数,第三个参数为输入流(即`stdin`);
3. 使用`strcspn()`函数找到字符串中第一个换行符`\n`的位置,并将其替换为字符串结束符`\0`,即去除字符串末尾的换行符;
4. 使用`strlen()`函数计算输入的字符串长度,并输出结果。
注意事项:
1. `fgets()`函数会读取换行符`\n`,因此需要使用`strcspn()`函数去除字符串末尾的换行符;
2. 字符数组`str`的长度应该足够存储输入的字符串,否则可能会导致缓冲区溢出的问题。
相关问题
c语言实现判断字符串最后一个字符
要判断字符串中的最后一个字符,你可以使用C语言中的数组和字符串操作函数。以下是一种实现方法:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str[20];
printf("请输入一个字符串:");
scanf("%s", str);
int len = strlen(str);
if (len > 0) {
char lastChar = str[len - 1];
printf("字符串的最后一个字符是:%c\n", lastChar);
} else {
printf("字符串为空。\n");
}
return 0;
}
```
这段代码首先声明了一个长度为20的字符数组 `str`,用于存储输入的字符串。然后使用 `scanf` 函数接收用户输入的字符串。接下来,使用 `strlen` 函数获取字符串的长度,存储在变量 `len` 中。
如果字符串长度大于0,则说明字符串非空。我们可以通过 `str[len - 1]` 来获取最后一个字符,并将其存储在变量 `lastChar` 中。最后,使用 `printf` 函数打印出最后一个字符。
请注意,这段代码假设输入的字符串不超过20个字符,如果超过了该限制,可能会导致数组越界。在实际应用中,需要根据实际需求对代码进行适当的修改和错误处理。
用c语言实现字符串去重
以下是一种可能的实现方式:
```c
#include <stdio.h>
#include <string.h>
void remove_duplicates(char *str) {
if (str == NULL) {
return;
}
int len = strlen(str);
if (len < 2) {
return;
}
int tail = 1;
for (int i = 1; i < len; ++i) {
int j;
for (j = 0; j < tail; ++j) {
if (str[i] == str[j]) {
break;
}
}
if (j == tail) {
str[tail++] = str[i];
}
}
str[tail] = '\0';
}
int main() {
char str[] = "Hello, world!";
printf("Before: %s\n", str);
remove_duplicates(str);
printf("After: %s\n", str);
return 0;
}
```
该函数的基本思路是:从第二个字符开始,依次判断是否与前面的字符重复,如果不重复就加入到结果字符串中。用一个变量 `tail` 记录结果字符串的尾部位置,每次加入新字符时 `tail` 加一。最后在结果字符串结尾处加上 `\0`,表示字符串结束。注意需要特判空指针和长度小于 2 的字符串。
例如,对于输入字符串 "Hello, world!",输出结果为 "Helo, wrd!"。