我正在尝试使用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存储在一个变量中,然后才尝试对该变量使用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;
}
你能指出我正确的方向吗?现在不要了,我还能做些什么。
问候,
最爱
最佳答案
删除*(取消引用),
strcat(palavra2, pont);
strcat期望
char*
而不是char
但此版本会附加其余全部内容。
您必须创建一个以nul结尾的字符串。
*是没有用的
*pont++;
这做好了
pont++;
现在一次
int main()
{
char palavra[SIZE];
char palavra2[SIZE];
char c2[2] = "a";
char *pont = palavra;
char *pont2 = palavra2;
printf("Insert the string\n");
scanf("%s", palavra);
do{
if (isdigit(*pont)){
c2[0] = *pont;
strcat(palavra2, c2);
}
pont++;
}while (*pont != '\0');
printf("\nThe number is:\n%s\n", palavra2);
return 0;
但是,这太复杂了
int main()
{
char palavra[SIZE];
char palavra2[SIZE];
printf("Insert the string\n");
scanf("%s", palavra);
char *pont = palavra;
char *pont2 = palavra2;
while (true) {
char c = *pont ++;
if (c == 0) break;
if (isdigit(c)){
*pont2++ = c;
}
};
printf("\nThe number is:\n%s\n", palavra2);
return 0;
关于c - 带有指针的c strcat,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9981620/