0

我正在尝试编写一个用于演示一些基本解析的程序,但 C 不是我的主要语言。这种方式存在问题,我正试图让它打印这个输出。

输出:FOO/4200、FOO、4200

假设显示组合,然后分别显示。

char *afterSeparator(char *complete)
{
    char *separator = strchr(complete, '/');
    if(slash) 
    {
    return separator + 1;
    }
    return complete;
}

char *beforeSeparator(char *complete)
{
    char *separator = strchr(complete, '/');
    if(separator)
    {
        *separator = '\0';
    }
    return complete;
void printParts(void)
{
    char original[] = "FOO/4200";
    char *preSeparator = beforeSeparator(original);
    char *postSeparator = afterSeparator(original);
    printf("%s, %s, %s\n", original, preSeparator, postSeparator);
}
4

3 回答 3

1

当你使用“beforeSeparator”时,你会用'\0'覆盖'/'。这将终止中间的字符串。当您生成“afterSeparator”时,字符串中不再有“/”。

于 2012-12-10T05:32:04.973 回答
1

先打电话afterSeparator后打电话beforeSeparator

在所有你的订单应该是

  1. 第一次打印原件
  2. 调用 afterSeparator
  3. 在分隔符之前调用
  4. 打印 preSeparator & postSeparator

beforeSeparator/用替换\0。因此,调用afterSeparator后调用beforeSeparator将不起作用。original调用后打印beforeSeparator也不会给出正确的结果,因为它只会FOO因为\0.

于 2012-12-10T05:32:21.620 回答
0

我已经为你做了一个样本。

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

int main()
{
char str[100] = "Hello/Jay";

printf("\n%s\n", strrchr(str, '/')+1);
str[strlen(str)-strlen(strchr(str, '/'))] = '\0';
printf("\n%s\n", str);

return 0;
}

根据您的需要对其进行修改。

于 2012-12-10T11:09:29.510 回答