我正在尝试编写一个将用于演示的程序 一些基本的解析,但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);
}
答案 0 :(得分:1)
使用“beforeSeparator”时,用'\ 0'覆盖'/'。这将终止中间的字符串。 当你产生“afterSeparator”时,你不再有字符串中的'/'。
答案 1 :(得分:1)
在致电afterSeparator
之前致电beforeSeparator
。
你的所有订单都应该是
beforeSeparator
将/
替换为\0
。因此,在调用afterSeparator
后调用beforeSeparator
将无效。调用original
后打印beforeSeparator
也无法提供正确的结果,因为FOO
会打印\0
。
答案 2 :(得分: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;
}
根据您的需要进行修改。