gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 19:12:48 27 4
gpt4 key购买 nike

我正在开发一个程序,要求我输入一条新消息并替换旧消息,但我必须测试该消息是否比上一条消息长。我想得到与我的程序类似的答案,因为这是我现在正在学习的一课。它要求我输入新字符的大小,但是当我测试它时,它会使用我设置的大小进行测试。

#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];
}
}

最佳答案

我将 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);

}

关于c - 使用旧消息测试输入消息的长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36432642/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com