如何在字符串中的空格后打印所有字符?

时间:2014-05-21 03:48:45

标签: c string

+OK (number)中执行SIZE命令后,消息将返回ncat。我想只返回数字,所以第一个空格后的字符串,并使其成为一个int。我该怎么做呢?该字符串存储在char buff[1000]

int getsize(char *file) {
    sprintf(buff, "SIZE '%s'\n", file);
    send(sockfd, buff, strlen(buff), 0);
    rsize = recv(sockfd, buff, 1000, 0);
    sscanf(buff, "%d", &resultcode);
    return (int) buff;
}

4 个答案:

答案 0 :(得分:0)

在C中,字符串只是内存(地址)中的起始点,如果逐个字符地处理它们,通常以null结尾(一个值为0x00的字符)。

这意味着如果你创建一个返回空格后面第一个字符地址的函数,你(有效地)有一个原始字符串的子字符串,它包含空格后面的字符串。

 const char* value = "Now is the time...";

 const char* firstCharAfterSpace(const char* input) {
   const char* starting = input;
   while (*starting != ' ') {
     starting++;
   }
   // first one _after_
   starting++;
   return starting;
 } 

 printf("%s", firstCharAfterSpace("Now is the time..."));

 printf("%s", firstCharAfterSapce(value));

应显示

 is the time...

答案 1 :(得分:0)

我必须认为问题代码在检查错误时需要更加谨慎。但是(在问题的引导下):

int getsize(char *file)
{
    sprintf(buff, "SIZE '%s'\n", file);
    send(sockfd, buff, strlen(buff), 0);
    rsize = recv(sockfd, buff, 1000, 0);
    return(atoi(strchr(buff, ' ') + 1));  // Assuming that *buff = "+OK nnn..."
}

答案 2 :(得分:0)

使用此代码:

const char* firstCharAfterSpace(const char* input) {
   const char* starting = input;
   while (*starting++ != ' ');

   return ++starting;
 } 

 printf("%s", firstCharAfterSpace("Now is the time..."));

答案 3 :(得分:0)

  

如何在C?

中的字符串中的空格后打印所有字符

您搜索空格并从下一个字符开始打印:

const char *str = "foo bar baz quirk";
puts(strchr(str, ' ') + 1);

(如果您想将其转换为数字,那就是另一个问题;在这种情况下,man 3 strtodman 3 strtol。)