在+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;
}
答案 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 strtod
和man 3 strtol
。)