【发布时间】:2021-08-29 13:42:37
【问题描述】:
我想将像“d'Artagnan”这样的 const 字符串添加到 8 个字符串的数组中 {“Duke of Buckingham”、“Porthos”、“Athos”、“Aramis”、“Planchet”、“Monsieur de Treville” , "Mousqueton", "Kitty"} 在字符串 "Aramis" 之后。但是当它运行时,“d'Artagnan”之后的字符串也是“d'Artagnan” 这是我的代码。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//function to add constant string
char addString(char *a[100], int *n, const char *s, int pos) {
for (int i = (*n); i > pos; i--) {
a[i] = a[i-1];
}
strcpy(a[pos], s);
(*n)++;
}
int main() {
int n;
char *a[100], s1[10];
strcpy(s1, "Aramis");
// allocate array of strings and get input
scanf ("%d", &n);
for (int i = 0; i < n; ++i) {
a[i] = (char*)malloc(100*sizeof(char));
}
for (int i = 0; i < n; ++i) {
fflush(stdin);
fgets(a[i], 100, stdin);
strtok(a[i], "\n");
}
//add string "d'Artagnan" after string "Aramis"
for (int i = 0; i < n; ++i) {
if (strcmp(a[i-1], s1) == 0) {
addString(a, &n, "d'Artagnan", i);
}
}
//Print output
for (int i = 0; i < n; i++) {
printf ("%s ", a[i]);
}
return 0;
}
【问题讨论】:
-
这和C++有什么关系?
-
你知道如何用 C 解决它吗?
-
您传递给
addString的数组是什么样的?你怎么打电话给addString。乍一看,您似乎应该复制指针并为(或strdup)新字符串分配空间。 -
@NguyễnHà 这不是重点。如果这是纯 C 程序,请删除 C++ 标记。此外,
it's wrong and idk why的错误无效。更详细地描述失败的原因。 -
请编辑您的问题,它属于哪里。 cmets 中的长段代码可读性不强。