int main(int argc, char *argv[])
{
printf("------------------------\n");
printf("WELCOME TO THE SCRAMBLER\n");
printf("------------------------\n\n");
char userString[21];
printf("Please input a String :> ");
scanf("%s", userString);
printf("\n\nTo cancel, please press the # key\n\n");
char mytarget[2];
char myreplace[2];
while(1)
{
bool notfoundFlag = false;
printf("Target : ");
scanf("%s", &mytarget[0]);
if(mytarget[0] == '#')
{
break;
}
printf("Replace with : ");
scanf("%s", &myreplace[0]);
int j;
for(j = 0; userString[j] !='\0'; j++)
{
if(userString[j] != mytarget[0])
{
printf("Character not found, try again\n\n");
notfoundFlag = true;
break;
}
break;
}
if(notfoundFlag)continue;
printf("Replacing %s with %s\n", &mytarget[0], &myreplace[0]);
char newStr[21];
newStr[21] = userString[21];
int i;
for(i = 0; newStr[i] != '\0'; i++)
{
if(newStr[i] == mytarget[0])
{
newStr[i] = myreplace[0];
}
}
printf("\nWord is : \" %s \" \n\n", &newStr);
}
printf("\n\n");
system("PAUSE");
return 0;
我遇到的问题是,在我进入mytarget和myreplace之后,当字符串混乱时,我会返回乱码,我不知道我做错了什么,有人可以帮助我吗?我是编程新手,也是C语言的新手(以Java开头)
答案 0 :(得分:0)
您无法在C
中以这种方式复制字符串。使用此功能可以最大限度地将一个char从一个数组复制到另一个数组。但在这种情况下,很可能甚至不会发生这种情况,因为索引21不在您的阵列中。
newStr[21] = userString[21];
将其替换为
strcpy(newStr, userString);
此循环也是错误的,只要userString
的第一个字符等于目标结果
for(j = 0; userString[j] !='\0'; j++)
{
if(userString[j] != mytarget[0])
{
printf("Character not found, try again\n\n");
notfoundFlag = true;
break;
}
break;
}
用类似的东西重写它:
for(j = 0; userString[j] !='\0'; j++)
{
if(userString[j] == mytarget[0])
{
printf("Character found\n\n");
found = true;
break;
}
}
if(!found)continue;
并在&
声明
newStr
之前的printf
printf("\nWord is : \" %s \" \n\n", newStr);