用指针知识判断字符串输入是否会文
时间: 2023-11-20 19:06:59 浏览: 57
可以通过判断字符串中的每一个字符是否为字母或数字来判断字符串是否为文本。可以使用指针和循环来实现这个功能。
以下是一个示例代码:
```c
#include <stdio.h>
#include <ctype.h>
int is_alpha_numeric(char *str) {
while(*str != '\0') { //遍历字符串
if(!isalnum(*str)) { //判断是否为字母或数字
return 0; //如果不是,返回0
}
str++; //指针后移
}
return 1; //如果循环完毕都是字母或数字,返回1
}
int main() {
char str[100];
printf("请输入一个字符串:");
scanf("%s", str);
if(is_alpha_numeric(str)) {
printf("输入的字符串是文本。\n");
} else {
printf("输入的字符串不是文本。\n");
}
return 0;
}
```
在这个例子中,我们使用了 `isalnum()` 函数来检查每个字符是否为字母或数字。如果不是,函数返回0并退出循环并返回结果。如果所有字符都是字母或数字,则函数返回1并表示输入的字符串是文本。
相关问题
用指针知识判断字符串输入是否"回文"
一个字符串是回文字符串,当且仅当它正着读和倒着读都一样。可以使用指针来判断一个字符串是否是回文字符串。
具体实现方法是:用两个指针分别指向字符串的首尾两端,然后逐步向中间移动指针,比较指针指向的字符是否相同,如果不同则不是回文字符串,否则继续移动指针。当指针相遇时,表示该字符串是回文字符串。
以下是示例代码:
```c
#include <stdio.h>
#include <string.h>
int isPalindrome(char *str) {
int len = strlen(str);
char *p = str, *q = str + len - 1; // 定义指针p和q分别指向字符串首尾
while (p < q) { // p < q时循环
if (*p != *q) { // 比较指针指向的字符是否相同
return 0; // 不是回文字符串,返回0
}
p++; // 移动指针p
q--; // 移动指针q
}
return 1; // 是回文字符串,返回1
}
int main() {
char str[100];
printf("请输入字符串:");
scanf("%s", str);
if (isPalindrome(str)) {
printf("%s 是回文字符串\n", str);
} else {
printf("%s 不是回文字符串\n", str);
}
return 0;
}
```
注意,上述代码中的字符串输入不应该包含空格,如果需要支持包含空格的字符串输入,可以使用 `fgets()` 函数读取带空格的字符串。
用指针的知识判断两个字符串是否相等,不使用strcmp
可以使用指针逐一比较两个字符串的每个字符,实现代码如下:
```c
#include <stdio.h>
int main() {
char str1[100], str2[100];
printf("请输入字符串1:");
gets(str1);
printf("请输入字符串2:");
gets(str2);
char *p1 = str1, *p2 = str2;
while (*p1 == *p2 && *p1 != '\0' && *p2 != '\0') {
p1++;
p2++;
}
if (*p1 == '\0' && *p2 == '\0') {
printf("两个字符串相等\n");
} else {
printf("两个字符串不相等\n");
}
return 0;
}
```
在这个例子中,使用了两个指针 `p1` 和 `p2` 分别指向两个字符串的首字符,使用循环逐一比较两个指针所指向的字符,当出现不同字符或者两个字符串已经比较完毕时,退出循环。最后判断两个指针所指向的字符是否同时为字符串结束符 `\0`,如果是则表示两个字符串相等,否则不相等。
阅读全文