私は動的メモリ割り当てと文字列を扱っています。割り当ては、入力する char 文字列の数 (それぞれ最大 80 文字) をユーザーに入力するように求めることです。次に、関数に文字列を取得させ、別の関数に文字列と文字数を出力させます。
ポインター配列を使用して、関数との間でデータを取得します。質問を読み直して、ポインター配列も動的に割り当てる必要があることを確認するまで、すべてがうまく機能し、割り当てを送信する準備ができていました。私はそれを機能させましたが、今では , がi = 0
意味puts(strptr1[i]);
不明になります (ɶ?)。一方、i = 1
上は大丈夫です。
ありがとう、これが私のコードです。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void inputStrings(char *strptr1[], int n);
void outputStrings(char *strptr1[], int n);
int main()
{
int n = 0;
char *strptr = 0;
printf("This program uses dynamic storage to manipulate character strings. Fun!");
printf("\n\nHow many strings will you enter? ");
scanf("%d", &n);
fseek(stdin,0,SEEK_END); // Clear input buffer
// char *strptr[n];
strptr = (char *) calloc(n, sizeof(char));
inputStrings(strptr, n);
outputStrings(strptr, n);
return 0;
}
void inputStrings(char *strptr1[], int n) // Prompt for input and copy into dynamic memory
{
const int STRLNG = 80;
int i = 0;
char strname[STRLNG];
printf("Input strings:\n");
for (i = 0; i < n; i++)
{
gets(strname);
strptr1[i] = (char *) malloc(strlen(strname+1));
strcpy(strptr1[i], strname);
}
}
void outputStrings(char *strptr1[], int n) // Determine length and print length and string
{
int i = 0;
printf("\nChar | String\n");
for (i = 0; i < n; i++)
{
printf(" %2d | ", strlen(strptr1[i]));
puts(strptr1[i]);
}
}