【问题标题】:Using isalpha and white space removal使用 isalpha 和空白去除
【发布时间】:2016-09-27 17:07:07
【问题描述】:

您好,我是 C 的新手,有一个简单的问题。

我做了一个函数,它接受一个字符串,该字符串应该去掉空格和特殊字符,并将所有大写字母转换为小写。

但是当它运行时,它只会将大写转换为小写。

void txtedit(char *str){

int i;

for(i=0; i < strlen(str); i++) {

    if (isalpha(str[i])) {
        str[i] = tolower(str[i]);

    }//end if
}//end for
}//end void function

任何帮助将不胜感激。

【问题讨论】:

  • 你认为它将如何“删除”空格?
  • 你需要另一个变量,比如int j = 0; 然后str[j++] = tolower(str[i]); 完成后不要忘记编写一个新的字符串终止符。这将只保留字母字符,离您的目标更近一步。如果要保留字母和数字,请将isalpha 更改为isalnum
  • 为了从字符串中“取出空格和特殊字符”,请务必在末尾留下'\0'

标签: c


【解决方案1】:

为了摆脱非字母字符和空格,你可以在开头(在你的 for 循环下)有一个 while 循环,上面写着类似

while (!((str[i]>='a'&& str[i]<='z') || (str[i]>='A'&& str[i]<='Z' || line[i]=='\0'))){

(确保新字符串中的字符是 a-z 或 A-Z 而不是空格),

然后创建一个名为 j 的变量来填充字母字符:

        for(j=i;str[j]!='\0';j++)
        {
            str[j]=str[j+1];
        }
        str[j]='\0';
    }
}

然后打印字符串并希望它有效。让我知道发生了什么!

【讨论】:

    猜你喜欢
    • 2017-09-06
    • 2021-11-05
    • 2017-09-17
    • 2019-08-06
    • 2013-05-14
    • 2012-04-26
    • 2019-01-15
    • 2011-05-06
    • 1970-01-01
    相关资源
    最近更新 更多