c - 数组C编程中打印出奇怪的字母

标签 c arrays printf

我正在尝试删除字符串之间的空格并使用 isalpha() 函数打印出第一个单词。

当我打印出来时,只打印出第一个字母。例如“你好 Pandas ”,我得到“hhhhh”,但我想要洞词“你好”

int main()
{
    char inputString[]={"hello big panda"};
     int k=0;

    int i=0;
    do
    {
    inputString[i];
    i++;
    }
    while (inputString[i]=isalpha(inputString[i])); 

    for(i=0; inputString[i] !='\0' ;i++)
    {
        for (k=i; inputString[k] != '\0'; k++)
        {
            inputString[k] =inputString[i];
        }
    }
    printf("%s", inputString);

    return 0;
}

完成了这个:

int printfirstword(char sentence[])
{
    int k=0;
    int i=0;
    while (isalpha(sentence[i])) //checking for the first blank space
    {
        i++;
    }
    sentence[i] = '\0';

    printf("%s\n", sentence);

    return 0;
}
int main()
{

        char sentence[100];
    int wordNumber;
    char answer;

    printfirstword("Hello there")
return0;
}

但我不想更改传递给它的字符串

最佳答案

您可以简单地使用 while 循环代替 do-while。您可以简单地增加 i 直到找到第一个空格的索引。然后使用 i 的值,您可以在字符串中插入 '\0' 。输出它就完成了。 :)

#include <stdio.h>
#include<ctype.h>

int main()
{
    char inputString[]={"hello big panda"};
    int k=0;

    int i=0;
    while (isalpha(inputString[i])) //checking for the first blank space
    {
        i++;
    }

     inputString[i] = '\0';
    printf("%s", inputString);

    return 0;

}  

如果您想保留原始字符串,那么您可以简单地创建一个新字符串,例如newStr,然后

while (isalpha(inputString[i])) //checking for the first blank space
    { newStr[i]=inputString[i]; //copy first word into newStr
        i++;
    }
newStr[i] = '\0';
    printf("%s", newStr);

关于c - 数组C编程中打印出奇怪的字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47638353/

相关文章:

c++ - ARM 交叉编译

c - 将二进制文件读入结构时出现段错误

javascript - 如何在 JavaScript 中对使用逗号分隔的数字 _and_ 符号的字符串数组进行最佳排序

c# - 数组越大,C# 数组调整大小所需的时间越长吗?

c++ - 制表符(\t)有多少个空格?

php - 重用 Sprintf 参数或 PHP 中的替代方案

c - while循环不写入显存

c - Linux:如何检查是否创建了新进程

大型数组的 PHP 内存错误

c++ - 为什么这在 C++ 中返回零?