あなたは単語を読みたいです。このために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]
- バッファ オーバーフローを防ぐために、長さ指定子 (ここでは 63) を使用します。
次に、必要に応じて
配列/単語の最初の文字を大文字にし、使用します
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);
}