bibi 發問時間: 電腦與網際網路程式設計 · 4 年前

C++ 建立一個 void change(char*str)函式,將字串中的小寫英文字母轉換為大寫,大寫英文字母轉換為小寫,非英文字母轉換為'?',然後輸出換字串。?

這是我的程式碼:

#include<stdlib.h>

#include<stdio.h>

#include<string.h>

void change(char *str)

{

int i;

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

{

if(str[i]>='a'&&str[i]<='z')

str[i]-=32;

else if(str[i]>='A'&&str[i]<='Z')

str[i]+=32;

else

str[i]="?";

}

}

main()

{

char str[100],str1[100];

printf("請輸入一組字串:");

scanf("s",&str);

str1=change(str);

printf("s",str1);

system("PAUSE");

}

想問為甚麼不能直接寫str[i]="?";

還有編譯時出現

[Error] invalid conversion from 'const char*' to 'char' [-fpermissive]

[Error] incompatible types in assignment of 'void' to 'char [100]'

是甚麼意思?

已更新項目:

2.不好意思不太懂,所以"?"是字串?那我要怎麼把非英文的部分改成'?'啊?

3.所以不能用str[100]囉?可是不是要str一個記憶體空間?

2 個已更新項目:

哦哦!!我做出來了!!

原來是" "跟' '沒弄清楚

下面那邊問同學之後也知道錯哪了

謝謝你的解答

1 個解答

評分
  • 4 年前
    最佳解答

    1. Thank you for not showing the line numbers of the [Error]

    你真是好貼心!

    2. 想問為甚麼不能直接寫str[i]="?"

    當然不行. 左邊是字元(char)型態 而右邊是字串型態.他們是不同/不互通的!

    3. [Error] invalid conversion from 'const char*' to 'char' [-fpermissive]

    line 14: str[i] = "?". See Q2 above.

    4. [Error] incompatible types in assignment of 'void' to 'char [100]'

    line 23: str1=change(str);

    當然不行. 左邊是字串型態 而右邊是void.他們是不同/不互通的!

    #include<stdio.h>

    #include<string.h>

    #include<ctype.h>

    void change(char *str) {

    int i;

    for(i=strlen(str)-1; i>=0;--i)

    if(islower(str[i])) str[i] -= ('a'-'A');

    else if(isupper(str[i])) str[i] += ('a'-'A');

    else str[i]='?';

    }

    int main() {

    char str[100];

    for(;printf("請輸入一組字串:") && scanf("%s",str) && '\0' != str[0]; printf("我輸出一組字串:%s\n",str)) change(str);

    return 0;

    }

    更新:

    2.不好意思不太懂,所以"?"是字串?那我要怎麼把非英文的部分改成'?'啊?

    請你先回答我這個問題: 你要把非英文的"什麼"改成'?'?

    3.所以不能用str[100]囉?可是不是要str一個記憶體空間?

    你在說甚麼啊? 我神時說"不能用str[100]"?

還有問題?馬上發問,尋求解答。