我正在编写一个代码,如果我的数组不以空格结尾,则代码的行为会有所不同。我想检查一下是否有空格。如果没有,那么我想在我的数组的末尾添加一个空格。这是数组的代码。
char* buffer[1024];
fgets(buffer,1024,fp);
char* str = buffer+2; // don't need the first two characters
char* pch;
pch = strtok(str," ");//I am dividing the string into tokens as i need to save each word in a separate variable
.
.
.
所以我的问题是,首先,我如何检查str
的最后一个字符是否是空格?
其次,如果它不是空格,我如何追加空格?
我已经尝试strcat
但我认为问题是我仍然无法弄清楚如何知道最后一个字符是否是空格。我知道这可以通过字符串和向量轻松完成。但我想要一个解决我的代码的方法。谢谢!
编辑: 这是分割行和计算单词数量的代码。
//At the end of this while loop. ncol will contain the number of columns
while(1){
fgets(buffer,1024,fp);
if (buffer[1] == 'C'){ // the line is #C 1 2 3 4 5 6 7 8 9 10 11 12 13
char* str = buffer+2;
int n = strlen( str );
if(n == 0 || str[n-1] != ' ') {
str[n] = ' ';
str[n+1] = '\0';
}
char* pch;
pch = strtok(str," ");
while(pch != NULL){
ncol++;
pch = strtok (NULL, " ");
}
}
if(buffer[0] == '#'){
numHeader++;
}
else {break;}
}
答案 0 :(得分:1)
以下是您特定案例的代码
int n = strlen(str);
// *** RTRIM()
int idx = n-1;
for(; idx >= 0; idx--)
if(str[idx] != '\0' && str[idx] != " " && str[idx] != '\t' && str[idx] != '\n' && str[idx] != '\r')
break;
str[idx + 1] = '\0';
// ***
int cnt = 0;
char* pch = strtok(str, " ");
while (pch != NULL)
{
cnt++;
printf ("%s\n",pch);
pch = strtok (NULL, " ");
}
编辑使用右侧修剪
答案 1 :(得分:0)
由于您使用C ++标记了您的问题:
std::string str = "bla ";
if (str[str.size()-1] != ' ')
str.push_back(' ');
else
//do smth