gpt4 book ai didi

带有指针的 c strcat

转载 作者:行者123 更新时间:2023-12-04 05:42:42 24 4
gpt4 key购买 nike

我正在尝试使用 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 不工作。

第二次尝试是程序找到一个数字,将该字符存储在一个变量中,然后才尝试将 strcat 与该变量一起使用。这是代码:

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;
}

你能给我指出正确的方向吗?不要现在我还能做什么..

问候,

蚕 bean

最佳答案

你让事情变得更难了。你不需要 strcat:

/* Untested. */   
char *pont = palavra;
char *pont2 = palavra2;

while (*pont) {
if (isdigit(*pont))
*pont2++ = *pont;

pont++;
}
*pont2 = 0;

关于带有指针的 c strcat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9981620/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com