如何将字符串的前部复制到分隔符

时间:2011-09-03 20:31:40

标签: c

我需要抓取一个字符串的第一部分,包括路径中的最后一个反斜杠。我是C的新手。所以我想知道以下代码是否是一个好方法?或者有更好的方法吗?

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

int main(int argc, char* argv[]) {

   char szPath[260] = {0};
   strcpy(szPath, argv[0]);
   char* p = szPath;

   size_t len = strlen(argv[0]);
   p+=len;  //go to end of string

   int backpos = 0;
   while(*--p != '\\')
       ++backpos;

   szPath[len-backpos] = 0;

   printf("%s\n", szPath);

   return 0;
}

收到评论后更改为:

char szPath[260];
strcpy(szPath, argv[0]);

/*Scan a string for the last occurrence of a character.*/
char *p = strrchr(szPath, '\\');  

if (p) {
    *(p + 1) = 0;  /* retain backslash and null terminate after that */
} else {
    /* handle error */
}

printf("%s\n", szPath);

1 个答案:

答案 0 :(得分:7)

我会选择strrchr。假设str指向可写内存:

char *p;
if ((p = strrchr(str, '\\'))
    *(p + 1) = 0; /* Since we passed it to strrchr, it's 0-terminated. */

显然,如果您使用路径并且可能更合适,basenamedirname可能就在那里。