[英]Formatting C-strings
程序應該使用一個函數來接受一個指向C字符串的指針作為參數,並將字符串中每個句子的第一個字符大寫。 我輸出有問題。 這是我的代碼:
#include "stdafx.h"
#include <cstring>
#include <iostream>
using namespace std;
void Capitalize(char *);
int _tmain(int argc, _TCHAR* argv[])
{
char sentence[1000];
cout << "Please enter a sentence: " << endl;
cin.getline(sentence, 1000);
char *sentencePtr = sentence;
Capitalize(sentencePtr);
cout << sentencePtr;
cin.get();
return 0;
}
void Capitalize(char *str){
int count;
for(count = 0; count < strlen(str); count++){
if(str[count] = '.'){
count += 2;
toupper(str[count]);
}
}
}
toupper(str[count]);
這會將字符轉換為大寫,然后將結果拋出。 你要:
str[count]=toupper(str[count]);
此外,這是一項任務:
if(str[count] = '.'){
你想要一個比較:
if(str[count] == '.'){
這是一個很好的去,但toupper
返回一個字符的大寫版本,它不會修改提供的參數。 嘗試這個:
// note, you must use '==', not '='
if(str[count] == '.')
{
count += 2;
str[count] = toupper(str[count]);
}
作為練習,嘗試避免完全使用C字符串,並查看是否可以僅使用std::string
類來完成。 最終,您將意識到使用std::string
比使用普通的舊C字符串容易得多。
您使用的是賦值運算符(=)而不是比較(==),您需要更改:
if(str[count] = '.'){
至:
if(str[count] == '.'){
正如其他人所指出的那樣,你對toupper的使用也不是很正確,因為它返回新值,它不會修改orignal,因為它沒有參考。
str[count] = toupper(str[count]);
你有一個拼寫錯誤:
if(str[count] = '.')
應該:
if(str[count] == '.')
另外, str[count] = toupper(str[count]);
看起來你的比較是錯誤的。 嘗試改變
if(str[count] = '.')
至
if(str[count] == '.'){
記住 - > =是賦值運算符==是比較運算符
(我認為你的資本化功能是錯誤的,但我不知道你的想法是否如此)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.