我正在尝试编写一个程序,将您给它的字母附加到当前字符串中。我几乎在每个领域都有问题,好像我尝试添加字母一样,这给了我一个“细分错误”。我已经添加了评论,每个部分应该做什么,希望对这个项目有所帮助。
#include <stdio.h>
#include <string.h>
int main(void) {
int choice;
char str[20];
char str1;
while(1) {
printf("Give your choice: "); //Asks the choice from the menu
scanf("%i", &choice);
if(choice == 1) { //This choice adds a letter to the (empty) string
printf("Give a letter: ");
scanf("%s", str);
strcat(str, str1); }
else if(choice == 2) { //choice 2 clears the string
printf("");
scanf("%s", str1); }
else if(choice == 3) { //choice 3 prints what's in the string
printf("%s", str1); }
else { //if choice is wrong, it ends the program
printf("Faulty input!\n");
break; }
} }
谢谢!
答案 0 :(得分:2)
此选择将字母添加到(空)字符串
scanf("%s", str);
strcat(str, str1);
在这里,您不是要在现有字符串中添加字母,而是清除字符串并重新输入。
将char
传递给strcat
也会导致未定义的行为,因为strcat
期望其参数为char *
并且 null 终止。
将其更改为如下。
scanf(" %c", &str1); //Takes single char
int len = strlen(str); //Finds the length
str[len] = str1; // Appends the char
str[len + 1] = '\0'; //null terminates the string