我正在编写以下代码,以找出给定字符串中存在的必需字符串,如果找到我想用必需的替换它们。我尝试如下,但是为了替换我没有做过可以帮助我
#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
有人可以帮助我
答案 0 :(得分:1)
C cannot do switch with string.
这可能会回答您的问题:best way to switch on a string in C
答案 1 :(得分: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;
}
答案 2 :(得分:0)
在C中,switch只能用于整数个案 - 因此会出错。
您的作业str=arr[j]
无效,因为您为const char*
分配了char *
。 C不会按分配值复制...如果要复制const char*
的值,然后对其进行更改,则需要malloc
自己的strcpy
记忆和{{1}}到那里。