使用旧消息测试输入消息的长度

时间:2016-04-05 16:59:02

标签: c visual-studio string-length

我正在制作一个程序,要求我输入一条新消息并替换旧消息,但我必须测试消息是否比最后消息长。我想得到与我的课程类似的答案,因为这是我现在正在学习的一课。它要求我输入新char的大小,但是当我测试它时,它需要我的设置大小进行测试。

#include <stdio.h>
#include <stdlib.h>

void editedMessage(char* nmessage, int size){

    char newMessage[];
    printf("Enter a new message!\n");
    gets_s(newMessage, sizeof(newMessage));

    if (size > sizeof(newMessage)){
        for (int i = 0; i < sizeof(newMessage); i++){
            nmessage[i] = newMessage[i];
        }
    }
    else {
        printf("New message is too long.\n\n");
    }

}

void main(){

    char message[] = "This is some message!";

    printf("Old message\n%s\n\n", message);

    editedMessage(message, sizeof(message));

    printf("New message\n\n%s\n\n", message);

}
编辑:我编辑了下一段代码,但现在说'围绕变量堆叠'消息'已损坏'

char newMessage[256];
    printf("Enter a new message!\n");
    gets_s(newMessage, sizeof(newMessage));
    int len = strlen(newMessage);

    if (size > len){
        for (int i = 0; i < sizeof(newMessage); i++){
            nmessage[i] = newMessage[i];
        }
    }

1 个答案:

答案 0 :(得分:1)

我将editedMessage的返回类型更改为char*并减少了参数。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAX_LENGTH 1000
char* editedMessage(char* oldMessage){

    char newMessage[MAX_LENGTH];
    printf("Enter a new message : ");
    fgets(newMessage,MAX_LENGTH,stdin);

    if (strlen(newMessage)<= strlen(oldMessage)){
        strcpy(oldMessage,newMessage);
    }
    else {
        printf("New message is too long.\n\n");
    }
return oldMessage; // In fact the value of oldMessage should have been changed if the new message is shorter in length
}

void main(){

    char message[MAX_LENGTH] = "This is some message!";

    printf("Old message : %s\n", message);

    editedMessage(message);

    /* Since we are dealing with pointers, note that I am not catching any
     * return values here. In essence any changes made to message in the 
     * editedMessage function is automatically effective in the main         
     * function.
     */


    printf("New message :%s\n", message);

}