从C中的字符串中删除非字母数字字符
我正试图找出如何从第一原理中删除C语言中非字母数字的字符,我几乎已经找到了答案,但还不是很清楚。下面是最后一个print语句,用于比较我的已排序字符串和未排序字符串从C中的字符串中删除非字母数字字符,c,C,我正试图找出如何从第一原理中删除C语言中非字母数字的字符,我几乎已经找到了答案,但还不是很清楚。下面是最后一个print语句,用于比较我的已排序字符串和未排序字符串 #include <stdio.h> #include <string.h> #include <ctype.h> int main(void) { char inputString[50]; scanf("%[^\n]%*c", inputString);
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int main(void) {
char inputString[50];
scanf("%[^\n]%*c", inputString);
char holderString[50];
int i = 0;
int j = 0;
while (i <= strlen(inputString)+1) {
if (((inputString[i] >= 101) && (inputString[i] <= 132)) || ((inputString[i] >= 141) && (inputString[i] <= 172))) {
holderString[j] = inputString[i];
j+=1;
} i+=1;
} printf("%s\n", holderString);
printf("%s\n", inputString);
return 0;
#包括
#包括
#包括
内部主(空){
字符输入字符串[50];
scanf(“%[^\n]%*c”,输入字符串);
char-holderString[50];
int i=0;
int j=0;
而(i=101)&&(inputString[i]=141)&&(inputString[i]您给出的整数边界与ASCII码不匹配。例如,'H'
为72
正如评论者所建议的那样,您应该使用char
literals,而不是阅读ASCII表
if ( ( inputString[i] >= 'A' && inputString[i] <= 'Z' )
|| ( inputString[i] >= 'a' && inputString[i] <= 'z' )
|| ( inputString[i] >= '0' && inputString[i] <= '9' ) ) {
if((inputString[i]>='A'&&inputString[i]='A'&&inputString[i]='0'&&inputString[i]您给出的整数边界与ASCII码不匹配。例如,'H'
为72
正如评论者所建议的那样,您应该使用char
literals,而不是阅读ASCII表
if ( ( inputString[i] >= 'A' && inputString[i] <= 'Z' )
|| ( inputString[i] >= 'a' && inputString[i] <= 'z' )
|| ( inputString[i] >= '0' && inputString[i] <= '9' ) ) {
if((inputString[i]>='A'&&inputString[i]='A'&&inputString[i]='0'&&inputString[i]为什么你的条件i
?您正在使用的代码是八进制
表示,它们应该是十进制
,无论如何,最好使用字符文本而不是代码。您是否在调试器中运行程序并逐行遍历代码?一些小提示:不要对ascii值使用幻数。所有值都是错误。101
不是A
。您查看的是八进制列,而不是十进制列。请改用文本'A
,以避免此类错误。为什么while
条件i
?您正在使用的代码是八进制
表示,它们应该是十进制
,无论如何,最好使用字符文本而不是代码。您是否在调试器中运行程序并逐行遍历代码?一些小提示:不要对ascii值使用幻数。所有值都是错误。101
不是A
。您查看的是八进制列,而不是十进制列。请使用文字'A
,以避免此类错误。isalnum
是一个很好的建议,OP似乎忘记了代码中的num部分。这是它指出基本问题而不仅仅是givin的最好建议g一个简单的回答,从长远来看没有帮助谢谢你的回答isalnum是一个很好的建议,OP似乎忘记了代码中的num部分。这是最好的建议,它指出了根本性的问题,而不仅仅是给出一个简单的回答,从长远来看没有帮助谢谢你的回答