C のポインターと strcat を使用しようとしています。これは私の学習プロセスの一部です。
アイデアは、ユーザーが数字を含む文字列を入力すると、出力は数字のみを返す必要があるということです。したがって、ユーザーが入力
した場合te12abc
、出力は12
.
これは私の最初の試みです:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#define SIZE 10
int main()
{
char palavra[SIZE];
char palavra2[SIZE];
char *pont = palavra;
char *pont2 = palavra2;
printf("Insert the string\n");
scanf("%s", palavra);
do{
if (isdigit(*pont)){
strcat(palavra2, *pont);
}
*pont++;
}while (*pont != '\0');
printf("\nThe number is:\n%s\n", palavra2);
return 0;
}
ポインターは期待どおりに機能していると思いますが、なぜ strcat が機能しないのか理解できません。
プログラムが数値を見つけ、そのcharを1つの変数に格納してから、その変数でstrcatを使用しようとする2回目の試行を行いました。コードは次のとおりです。
int main()
{
char palavra[SIZE];
char palavra2[SIZE];
char temp;
char *pont = palavra;
char * pont2 = &temp;
printf("Insert the string\n");
scanf("%s", palavra);
do{
if (isdigit(*pont)){
temp = *pont;
strcat(palavra2, pont2);
}
*pont++;
}while (*pont != '\0');
printf("\nThe number is:\n%s\n", palavra2);
return 0;
}
繰り返しますが、strcat で問題が発生します。
最後にもう一度試みましたが、ポインターがなくても strcat は機能しません。コードは次のとおりです。
int main()
{
int i = 0;
char palavra[SIZE];
char palavra2[SIZE];
char temp;
printf("Insert the string\n");
scanf("%s", palavra);
do{
if (isdigit(palavra[i])){
temp = palavra[i];
strcat(palavra2, palavra[i]);
}
i++;
}while (palavra[i] != '\0');
printf("\nThe number is:\n%s\n", palavra2);
return 0;
}
正しい方向に私を向けることができますか?これ以上何ができるのか..
よろしく、
お気に入り