2

我有一串整数值。例如 20 200 2000 21 1

我想删除第一个单词(在本例中为 20)。知道怎么做吗?

我考虑过使用类似...

sscanf(str, "/*somehow put first word here*/ %s", str);
4

4 回答 4

5

怎么样

char *newStr = str;
while (*newStr != 0 && *(newStr++) != ' ') {}
于 2012-10-23T17:04:53.233 回答
4

您可以只使用strchr(),这将设置str为第一个空格之后的子字符串,或者如果没有空格则不理会它;

char *tmp = strchr(str, ' ');
if(tmp != NULL)
    str = tmp + 1;
于 2012-10-23T17:10:32.153 回答
1

您可以将所有字符跳过到第一个空格,然后跳过空格本身,如下所示:

char *orig = "20 200 2000 21 1";
char *res;
// Skip to first space
for (res = orig ; *res && *res != ' ' ; res++)
    ;
// If we found a space, skip it too:
if (*res) res++;

此代码片段打印200 2000 21 1链接到 ideone)。

于 2012-10-23T17:07:55.313 回答
0

我发现最简单、最优雅的方法就是做这样的事情

   int garbageInt;
   sscanf(str, "%d %[^\n]\n",&garbageInt,str);
于 2012-10-23T20:18:35.523 回答