运行我的程序时:
#include <cs50.h>
#include <stdio.h>
#include <string.h>
int main(void)
{
string word = get_string("Give me a word: " );
int j = strlen(word);
int i;
char new[j + 1];
new[0] = '\0';
for (i = 0; i < j; i++)
{
if (word[i] == 'e')
{
strcat(new, "3");
}
else if (word[i] == 'i')
{
strcat(new, "1");
}
else if (word[i] == 'a')
{
strcat(new, "6");
}
else if (word[i] == 'o')
{
strcat(new, "0");
}
else
{
char p = word[i];
strcat(new, p);
}
}
printf("%s\n", new);
}
字符串
我得到错误:
no-vowels-test.c:39:25: error: incompatible integer to pointer conversion passing 'char' to parameter of type 'const char *'; take the address with & [-Werror,-Wint-conversion]
strcat(new, word[i]);
^~~~~~~
&
/usr/include/string.h:149:70: note: passing argument to parameter '__src' here
extern char *strcat (char *__restrict __dest, const char *__restrict __src)
型
我的目标是让最后一个else
语句将word[i]
数组中的当前字母附加到变量new[]
中,以拼写出一个新单词,其中每个元音都被一个数字替换,我对这些数字没有问题。但是最后一个else
语句似乎有问题,我不知道为什么。
2条答案
按热度按时间9rygscc11#
要使用
strcat
,需要提供一个指向以NULL结尾的字符串的指针。字符串
但是您不需要
strcat
来添加单个字符。尤其是你已经知道了写字符的位置。你只需要new[ i ] = c;
。只是不要忘记在完成后使用NUL终止字符串。2eafrhcq2#
strcat
的第二个参数必须是C字符串,即:char
的数组以空字节终止,而不是单个char
(如p
)。您可以使用
strncat
解决此问题:将strcat(new, p);
和上一行替换为:字符串
这最多连接从
word[i]
开始的字符串的1char
。另一种方法是直接设置
new
中的字节:型