1

必要な文字列が指定された文字列に存在することを確認するために、次のコードを作成しています。私は以下のように試しましたが、私が行っていない交換のために誰かが私を助けることができます

#include <stdio.h>
#include <string.h>
int main(void)
{
char *str;
   const char text[] = "Hello atm adsl";
   const char *arr[] = {"atm", "f/r", "pc","adsl"}; // If found I would like to replace them with Atm, F/R,PC,ADSL
int i=strlen(*arr);
for(int j=0;j<i;j++)
{
    str=arr[j];
   const char *found = strstr(text, arr[j]);
switch(str)
{
    case "Atm":
    break;
}

   puts(found ? "found it" : "didn't see nuthin'");
   return 0;

}
}

次のエラーが表示されます

invalid conversion from const char* to char*switch quantity not an integer

誰か助けてくれませんか

4

3 に答える 3

1

C cannot do switch with string.

これはあなたの質問に答えるかもしれません:Cで文字列をオンにする最良の方法

于 2012-06-23T10:23:18.967 に答える
1

これを試して!!!

 #include <stdio.h>
#include <string.h>

int main(void) {
    char *token;
    char text[] = "Hello atm adsl";
    char *arr[] = {"atm", "f/r", "pc","adsl"}; // If found I would like to replace them with Atm, F/R,PC,ADSL

    char textTmp[500] ="";

    token = strtok (text, " "); // catch single words
    while(token != NULL) {

        printf("%s\n", token);
        if (strncmp(token, arr[0], strlen(arr[0])) == 0) {
            token[0] = 'A';
        }else if (strncmp(token, arr[1], strlen(arr[1])) == 0) {
            token[0] = 'F';
            token[1] = '/';
            token[2] = 'R';
        } else if (strncmp(token, arr[2], strlen(arr[2]))== 0) {
            token[0] = 'P';
            token[1] = 'C';
        } else if (strncmp(token, arr[3], strlen(arr[3]))== 0) {
            token[0] = 'A';
            token[1] = 'D';
            token[2] = 'S';
            token[3] = 'L';
        }
        strncat(textTmp, token, strlen(token));
        strncat(textTmp, " ", 1);
        token = strtok (NULL, " ");
    }

    textTmp[strlen(textTmp)-1] = '\0';

    strncpy(text, textTmp, strlen(textTmp));
    printf("%s\n", text);


    return 0;



}
于 2012-06-23T11:03:55.123 に答える
0
  1. C では、switch は整数ケースでのみ使用できるため、エラーが発生します。

  2. を に割り当てているため、割り当てstr=arr[j]は無効です。Cは代入時に値でコピーしません...から値をコピーしてから変更したい場合は、自分のメモリとそこに移動する必要があります。const char*char *const char*mallocstrcpy

于 2012-06-23T10:22:15.613 に答える