用C编写简单的顶部代码



我想在我的笔记本电脑(windows 7)上做一个简单的顶部编码。似乎我写的任何东西都只在开头大写1个单词。

是否使用%s/%c/%[^n]

我该怎么办?

我使用Microsoft Visual c++ 2010 Express

#include <stdio.h>
#include <ctype.h>
int main()
{
    char kalimat;
    scanf ("%[^n]",&kalimat);
    kalimat=toupper(kalimat);
    printf("%s",kalimat);
    getchar ();
    return(0);
}

你想读一个单词。为此,您需要一个预定义大小的char数组。所以改变

char kalimat;

char kalimat[64]; /* Can hold 63 chars, +1 for the NUL-terminator */

接下来,要扫描一个单词。所以改变

scanf("%[^n]",&kalimat);

scanf("%63s", kalimat);

此处所做的更改为

  1. %s用于扫描一个单词,而%c用于扫描一个字符。
  2. 删除&符号,因为%s期望char*,而不是char**char(*)[64]
  3. 使用长度说明符(63,这里)以防止缓冲区溢出。

然后,如果你想

  1. 将数组/单词的第一个字符大写,使用

    kalimat[0] = toupper(kalimat[0]);
    

    *kalimat = toupper(*kalimat);
    
  2. 将数组中的所有字符大写,对数组的每个索引使用一个调用toupper的循环:

    int i, len; /* Declare at the start of `main` */
    for(i = 0, len = strlen(string); i < len; i++) /* Note: strlen requires `string.h` */
        kalimat[i] = toupper(kalimat[i]);
    

但是…您可能需要更改

getchar ();

int c; /* Declare at the start of `main` */
while((c = getchar()) != EOF && c != 'n');

以防止控制台关闭。


固定代码:

#include <stdio.h>
#include <ctype.h>
#include <string.h> /* For `strlen` */
int main()
{
    int i, len, c;
    char kalimat[64];
    scanf ("%63s", &kalimat);
    /* `*kalimat = toupper(*kalimat);` */
    /* or */
    /* `kalimat[0] = toupper(kalimat[0]);` */
    /* or */
    /* `for(i = 0, len = strlen(string); i < len; i++) 
        kalimat[i] = toupper(kalimat[i]);` */
    printf("%s", kalimat);
    while((c = getchar()) != EOF && c != 'n');
    return(0);
}

C库函数:

int toupper(int c);

将一个小写字母转换成它对应的大写

如果你想打印一个字符串的所有字母为大写:

int i=0;
while(str[i])
{
 putchar (toupper(str[i]));
 i++;
}

然而,对于单个字符的大写,你可以简单地使用:

 putchar (toupper(mychar));

函数返回大写(如果存在)或返回发送给它的相同字符。

在C语言中你可以存储一个字符串:

 char *string1="Elvis";
 char string2[]="Presley";
 char string3[4]="King";

相关内容

最新更新