我想在我的笔记本电脑上进行简单的toupper编码(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);
}
答案 0 :(得分:1)
你想读一个单词。为此,您需要一个预定义大小的char
数组。所以改变
char kalimat;
到
char kalimat[64]; /* Can hold 63 chars, +1 for the NUL-terminator */
接下来,您要扫描一个单词。所以改变
scanf("%[^\n]",&kalimat);
到
scanf("%63s", kalimat);
此处所做的更改是
%s
的使用,而不是用于扫描字符的%c
。%s
需要char*
,而不是char**
或char(*)[64]
。然后,如果你想
对数组/单词的第一个字符进行加密,使用
kalimat[0] = toupper(kalimat[0]);
或
*kalimat = toupper(*kalimat);
大写数组中的所有字符,在数组的每个索引上使用一个调用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);
}
答案 1 :(得分: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";