обработка строк в C Linux и Windows - PullRequest
3 голосов
/ 17 января 2012

Я новичок в программировании на Си. У меня есть проблема, которую я не понимаю. Кажется, что строки под окнами обрабатываются совершенно по-другому по сравнению с Linux, почему?

Это мой код

#include <stdio.h>
#include <string.h> // compare strings
void addextname(char *str1, char *str2, char *nome1){
    int i,j;
    i = 0;
    while (str1[i]!='.') {
        nome1[i] = str1[i];
        i++;
    }
    j = 0;
    while (str2[j]!='\0') {
        nome1[i] = str2[j];
        i++;
        j++;
    }
}

int main()
{
    char str1[9]="file.stl";
    char str2[9]="name.stl";
    int len1 = strlen(str1);
    int len2 = strlen(str2);
    char nome1[len1+len2+1];
    addextname(str1,str2,nome1);
    printf("%s  %s  %s\n",str1,str2,nome1);
    return 0;
}

Моя цель - прочитать имя входного файла в его расширении (.stl) и добавить к нему несколько символов, сохраняя это расширение. В Linux у меня нет проблем, в Windows вместо имен выходных файлов сохраняются неправильно. Моя строка компиляции

gcc modstr.c -std=c99 -o strings

Я действительно ценю ответ на этот вопрос!

Ответы [ 2 ]

10 голосов
/ 17 января 2012

Вы не заканчиваете 0 nome1.Попробуйте:

nome1[i] = 0; /* After the second while. */
0 голосов
/ 17 января 2012

Вы создали массив nome1, но не предоставили ему ничего.Это экстрасенс?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...