c - 文本行的操作

标签 c string visual-c++

下面的代码尝试一次操作多行文本。

1.我的第一个问题是编写一个循环来读取几行文本(使用 scanf()),并在输入的第一个字符是换行符时退出。这些文本行有一些条件: 第一个字符必须是 2 到 6 之间的数字,后跟一个空格和一行文本(<80)。这个数字将使文本“跳舞”。

2.我的第二个问题是弄清楚如何根据输入的第一个数字将字母从小写转换为大写,反之亦然。我必须进行这些转换,但我不知道如何调用它们来更改文本。例如:如果我输入“3 apples and Bananas”,正确的输出应该是“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])); 
}

最佳答案

您还可以定义一个函数printNthUpper(),它接受一个字符串和整数n,指定以大写形式打印哪些字符。该函数的循环将类似于您已有的函数,但有一个条件,比较提供的整数值和给定字母的索引来决定是否 调用 toupper() (例如 printf("%c", i%n == 0 ? toupper(s[i]) : s[i]);)。

关于c - 文本行的操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18549067/

相关文章:

c - 如果我的电脑是32位系统,它有一个32位地址对吗?但是当我在 C 中打印任何内存地址时,为什么我得到的地址 <32 位?

c - 无法获取整数数组的长度

java - Java 中的消息格式以及如何在 Golang 中复制相同的格式

c++ - 特殊类成员函数

c - 指针数组的内存分配

c - 此函数中缺少 free() 导致内存泄漏

c# - 从字符串中的字符位置获取行号的最简单方法是什么?

c# - 改变字符串的中间位置

c# - 从我的 c++ 应用程序调用 c# dll(解析 XML 文件)以将数组/列表返回给 c++

C++ 模板头 cpp 分离,将 *.cpp 包含到 *.h 中的解决方案不再有效