如何读取c中的字符串?

时间:2013-06-12 23:20:31

标签: c string

我使用此代码,但它无效。

#include <stdio.h>
#include <string.h>

int main() {
    char c, *strx = 0;
    c = getchar();
    while(c != '\n') {
        strx = strcat(strx, &c);
        c = getchar();
    }
    printf("%s\n", *strx);
    return 0;
}

如何将单词放入字符串?

2 个答案:

答案 0 :(得分:1)

更改

char *strx = 0

char strx [256];

例如:

#include <stdio.h>
#include <string.h>

int main()
{
    char c, strx[256] = "";
    int i = 0;
    c = getchar();
    while (c != '\n') {
        strx[i++] = c;
        c = getchar();
    }
    printf("%s\n", strx);
    return 0;
}

答案 1 :(得分:1)

你需要为strx分配空间(这里是堆栈,你也可以是malloc)

#include <stdio.h>
#include <string.h>

int main()
{
    char c, strx[100] = "";
    int i = 0;
    c = getchar();
    while (c != '\n') {
        strx[i++] = c;
        if (i == 99)
            break;
        c = getchar();
    }
    strx[i] = '\0';
    printf("%s\n", strx);
    return 0;
}

strcat不起作用,因为它最终需要一个null char,但它可能会在char之后找到垃圾。

更简单地说,您可以使用scanf:

#include <stdio.h>
#include <string.h>

int main()
{
    char strx[100] = "";
    scanf("%99s", strx);
    printf("%s\n", strx);
    return 0;
}