0

割り当ての説明の一部を以下に示します。ユーザーが done という単語を入力すると、プログラムは入力の受け入れを停止する必要があります。20 文字を超える単語はないと仮定します。

単語が 20 文字を超えるとエラー メッセージが表示され、再度入力する必要があることを確認する必要があります。また、完了と入力すると、プログラムが終了するはずです。これらのステートメントを正しく書く方法がわかりません。実行して20文字以上入力すると、エラーが発生します-Expression: L("Buffer is too small" &&0)

これまでの私のコードは次のとおりです。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXCHAR 20

int charcount(char []);

int main()
{
    char message[MAXCHAR];
    int numofchar;

    printf("Enter any word to display how many characters that word has.\nA word CANNOT be more than 20 charatcers long.\n");
    printf("When you are finished type the word done.\n");
    do
    {
        printf("\nEnter a word: " );
        gets_s(message, MAXCHAR);
        numofchar = charcount(message);
        while ( numofchar > MAXCHAR)
        {
            printf("The word enterd is more then 20 characters. Try again.\n");
            printf("Enter a word: " );
            gets_s(message, MAXCHAR);
        }
        printf("The word  %s has %d characters.\n", (message),numofchar);
    } while ( (message,MAXCHAR) != 'done');

    printf("\nEnd of program.\n");
    system ("PAUSE");
    return 0;
}


int charcount (char list[])

{
    int i, count = 0;

  for(i = 0; list[i] != '\0'; i++)
    count++;

  return(count);

}
4

1 に答える 1

0

エラーを検出するには、get_s の戻り値を確認するだけです。

http://msdn.microsoft.com/en-us/library/5b5x9wc7%28v=vs.90%29.aspx

int main()
{
    char message[MAXCHAR], *s;
    int numofchar;
    ...
    do
    {
        printf("\nEnter a word: " );
        s = gets_s(message, MAXCHAR);
        if (!s) {
          << some error handling code goes here >>
        ...
于 2013-11-02T22:25:49.557 に答える