以下のコードは、一度に複数行のテキストを操作しようとします。
1.私の最初の問題は、(scanf()を使用して)複数行のテキストを読み取るループを記述し、入力された最初の文字が改行のときに終了することです。これらのテキスト行にはいくつかの条件があります: 最初の文字は 2 から 6 までの数字で、その後にスペースとテキスト行 (<80) が続く必要があります。この数字により、テキストが「踊る」ようになります。
2. 私の 2 番目の問題は、最初に入力した数字に従って、文字を小文字から大文字に、またはその逆に変換する方法を理解することです。これらの変換を行うために機能する必要がありますが、それらを呼び出してテキストを変更する方法がわかりません。たとえば、「3 つのリンゴとバナナ」と入力した場合、正しい出力は「AppLes And BanNas」になるはずです。ご覧のとおり、空白は無視され、テキストは常に大文字で始まります。
#include <stdio.h>
#include <stdlib.h>
#include <string>
#include <ctype.h>
using namespace std;
void print_upper(string s1);
void print_lower(string s2);
void main(void)
{
char text[80];
text[0]='A';//Initialization
int count_rhythm;
while (text[0] != '\n'){//To make the loop run until a newline is typed
scanf(" %79[^\n]",text);
if(isdigit(text[0])) //To verify that the first character is a number
{
printf("\nGood");//Only to test
}
else
{
printf("\nWrong text\n");//Only to test
}
}
}
void print_upper(string s1)//Print capital letters
{
int k1;
for(k1=0; s1[k1]!='\0'; ++k1)
putchar(toupper(s1[k1]));
}
void print_lower(string s2)//Print small letters
{
int k2;
for(k2=0; s2[k2]='\0'; ++k2)
putchar(tolower(s2[k2]));
}