#include <stdlib.h>
#include <stdio.h>
#include <string.h>
void get_name();
void display_name(char *fullname);
int main(void)
{
char first[80];
char second[80];
char *fullname[80];
get_name();
display_name(*fullname);
system("pause");
return 0;
}
void get_name()
{
char first[80];
char second[80];
char *fullname[80];
printf("Please enter first name: ");
scanf("%s", &first);
printf("\nPlease enter last name: ");
scanf("%s", &second);
strcpy(*fullname, first);
strcat(*fullname, " ");
strcat(*fullname, second);
printf("\n\nFull name is : %s ", *fullname);
}
void display_name(char *fullname)
{
int index;
char check;
int count=0;
printf("\n\nFull name is : %s ", fullname); //check to see if string is passes correctly
for(index=0; fullname[index] != '\0'; index++)
{
check=fullname[index];
if(check != ' ')
{
count++;
}
}
printf("\n\nNumber of characters in string is: %i\n", count);
}
im get_name()から文字列を送信して文字数を数えるために文字列を送信しようとしています。私が文字列を渡すたびに、その文字列はぎこちなく出てきます。間違っていますか?私は最初と最後の名前を取得し、フルネームを連結するために1つの関数を使用し、文字の数を数えるために別の関数を使用する必要があります。関数からメインに文字列を渡す
なぜポインタの配列で読み取る文字列に代わり
sscanf
を使用する情報を抽出する必要がある場合は、キーボードからの読み取りscanf
を使用するfgets()は、避けなければならないのですか? '' char * fullname [80]; '' char fullname [160]; '、79 + 79 + 1 space +末尾のNUL –
[関数パラメータ](http://stackoverflow.com/documentation/c/1006)/function-parameters#t = 201611180623366898669) – Danh
'get_name'はmainの中の' fullname'変数を変更していないので、 'display_name'には初期化されていないchar配列が渡されます。 – acraig5075