【发布时间】:2015-02-05 19:04:52
【问题描述】:
void tr_str(char s[], char news[]){
int c;
size_t k =0;
while ((c = getchar()) != EOF)
{
for(k=0; k < strlen(s);k++)
{
if(c == s[k])
{
c = news[k];
}
}
putchar(c);
}
}
这是我的翻译功能,目前从命令行接收两个参数,并使用这些字母将第一组切换到第二组。我刚刚发现一个问题,如果两个参数的长度不同,它就不起作用。必须发生的是,如果第一个参数是 3 个字符长度,第二个是 2 个字符长度,则第二个参数会添加第三个字符,它应该等于存储在其中的最后一个字符。例如:arg1(a,b,c); arg2(x,y);使用时 arg2 变为 arg2(x,y,y);
感谢您的帮助。
【问题讨论】:
-
看看
strstr(),strchr(),strspn()? -
这些函数都不是理想的,因为你真的想要一个函数是
size_t indexof(char *haystack, int needle),但你得到的最好的是char *strchr(char *haystack, int needle),所以你需要通过减去指针来计算索引。跨度> -
我有点明白你在说什么。指针的数量显示数组中存储了多少实际值对吗?使用它我想我可以制作一个循环来用最后出现的字符填充剩余空间。有没有一个函数可以获取字符串最后出现的字符?